Tenemos una matriz de las cuales las claves son cadenas, pero esas cadenas a veces solo son números (por ejemplo, "123"). Al intentar acceder al conjunto con la tecla "123", obtenemos un aviso de índice no definido. Al acceder solo por el número entero 123, obtenemos el aviso de Desviación no definida. Esto nos dice que estamos tratando de indexarlo correctamente usando la cadena "123", pero aún no está configurado.Acceso matriz por cadena clave x, donde x es "123"
Tratando de encontrar un ejemplo para esta pregunta SO, esto es difícil, ya que PHP convierte las teclas de matriz en nuestro caso de prueba en enteros automáticamente, mientras que en nuestra aplicación real esto no sucede (debido al uso de Java Puente). La matriz de prueba que estamos tratando ahora es:
<?php
$array = array("123" => array(108, 8));
var_dump($array);
?>
Esto devuelve:
array(1) { [123]=> array(2) { [0]=> int(108) [1]=> int(8) } }
Mientras que en nuestro equivalente del mundo real, sería volver:
array(1) { ["123"]=> array(2) { [0]=> int(108) [1]=> int(8) } }
Así que en lo real mundo el índice en realidad es una cadena:
<?php
var_dump(array_keys($array));
?>
vuelve
array(1) { [0]=> string(3) "123" }
Así que, finalmente, la pregunta es la salida del siguiente código:
<?php
foreach ($array as $key => $value) {
if (!isset($array[$key])) {
print "What is happening here?";
}
}
?>
que da:
What is happening here?
Basado en el comentario de Yoshi, aquí está funcionando código de prueba:
<?php
$array = (array)json_decode('{"123":[108,8]}');
foreach ($array as $key => $value) {
if (!isset($array[$key])) {
print "What is happening here?";
} else {
print "Nothing to see here, move along";
}
}
?>
no le puede ayudar en la respuesta a su pregunta. Pero si usa '$ array = (array) json_decode ('{" 123 ": [108,8]}');' Obtendrá su ejemplo en el mundo real (teniendo '123 'como una clave de cadena). Tal vez esto ayude a otros a reproducir el problema. – Yoshi
(referencia) http: // codepad.org/ewMJyKDU Creo que esta es una pregunta realmente interesante. Y con suerte, alguien puede compartir algo de luz sobre el comportamiento. – Yoshi