Recentemente ho notato problemi durante l'utilizzo della funzione array_search nel mio codice. Sto cercando l'array "$ allcraftatts" per il valore "sharp". Ho cercato di isolare il problema attraverso la creazione di un esperimento di due linee:PHP array_search restituisce costantemente la prima chiave dell'array
$testcopy=$allcraftatts;
$testsharp=array_search("sharp", $testcopy);
Utilizzando "print_r (get_defined_vars());" più avanti, ottengo questo risultato:
[testcopy] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => Sharp Stone
[7] => Sharp Stones
[8] => stone
[9] => object
[10] => sharp
[11] => hard
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
)
[testsharp] => 0
Mi sono assicurato che non modifico queste variabili in nessun altro momento.
Ora, se cambio il mio codice di
$testcopy=$allcraftatts;
unset($testcopy[0]);
$testsharp=array_search("sharp", $testcopy);
esso restituisce "1".
Questo mi porta a credere che restituisca sempre la prima chiave nell'array.
Mi sconcerta! Questo è uno di quei bug che ti fa temere qualcosa di sbagliato con il linguaggio stesso. Comunque sia dubbio, alla fine sono stato spinto a guardare alla fonte PHP per qualcosa di sbagliato lì, ma sfortunatamente non riuscivo a capirlo.
Vedendo che è una funzione semplice come questa, sarò sicuramente completamente umiliato dalla risposta inevitabilmente semplice, ma a questo punto, voglio solo una risposta.
Quale versione di PHP stai usando? Puoi anche mostrarci l'output di un 'var_dump' su quelle variabili invece di' print_r'? Mostrerà se hai degli spazi in più (che è un comune problema di persone con esperienza con 'array_search') –