Ho riscontrato qualcosa di strano.Elemento array di accesso indicizzato da stringa numerica
Ho una matrice php, indicizzata con tasti numerici. Tuttavia sembra impossibile accedere ad uno qualsiasi degli elementi perché php tratta automaticamente le stringhe numeriche come numeri interi, causando un avviso di offset illegale.
In circostanze normali è imposabile creare un array php con indici stringa numerici, ma può succedere con il casting di tipo.
di riprodursi:
$object = new stdClass();
$object->{'1'} = 'one';
$array = (array) $object;
var_dump($array);
/* produces
array(1) {
["1"]=>
string(3) "one"
}
*/
//none of the following will work
$key = '1';
echo $array[1], $array['1'], $array["1"], $array[(string)1], $array[$key];
Si tratta solo di un caso bug bordo? Ho incontrato solo il problema quando si tenta di migliorare la mia risposta per another SO question
esempio di codice in diretta: http://codepad.viper-7.com/dFSlH1
Penso che stia accadendo quando converti da un oggetto all'altro. Perché funziona bene se si tratta di un array associativo. Esempio: http://codepad.viper-7.com/wskYI9 –
Inoltre, se si utilizza l'approccio 'json_decode (json_encode ($ object), true)' piuttosto disordinato, questo problema non si verifica – Dale
Alcune informazioni qui http: //php.net/manual/en/language.types.array.php#language.types.array.casting – danjam