multidimensional - foreach php w3schools
Cómo encontrar el índice foreach (12)
Creo que la mejor opción es la misma:
foreach ($lists as $key=>$value) {
echo $key+1;
}
es facil y normalmente
¿Es posible encontrar el índice foreach
?
en un bucle for
siguiente manera:
for ($i = 0; $i < 10; ++$i) {
echo $i . '' '';
}
Te daré el índice de $i
.
¿Tengo que usar el bucle for
o hay alguna forma de obtener el índice en el bucle foreach
?
Debe tenerse en cuenta que puede llamar a key()
en cualquier matriz para encontrar la clave actual. Como puede adivinar, current()
devolverá el valor actual y next()
moverá el puntero de la matriz al siguiente elemento.
Estos dos bucles son equivalentes (barra las barandillas de seguridad, por supuesto):
for ($i=0; $i<count($things); $i++) { ... }
foreach ($things as $i=>$thing) { ... }
p.ej
for ($i=0; $i<count($things); $i++) {
echo "Thing ".$i." is ".$things[$i];
}
foreach ($things as $i=>$thing) {
echo "Thing ".$i." is ".$thing;
}
Jonathan tiene razón. Las matrices de PHP actúan como una tabla de mapa que asigna claves a valores. en algunos casos, puede obtener un índice si su matriz está definida, como
$var = array(2,5);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."/n";
}
tu salida será
2
5
en cuyo caso, cada elemento de la matriz tiene un índice conocido, pero si luego hace algo como lo siguiente
$var = array_push($var,10);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."/n";
}
no tienes salida Esto sucede porque los arreglos en PHP no son estructuras lineales como lo son en la mayoría de los lenguajes. Son más como tablas hash que pueden o no tener claves para todos los valores almacenados. Por lo tanto, foreach no usa índices para rastrearlos porque solo tienen un índice si la matriz está definida. Si necesita tener un índice, asegúrese de que sus arreglos estén completamente definidos antes de rastrearlos y use un bucle for.
Los arreglos PHP tienen punteros internos, así que prueba esto:
foreach($array as $key => $value){
$index = current($array);
}
Funciona bien para mí (aunque solo muy preliminarmente probado).
Normalmente hago esto cuando trabajo con matrices asociativas:
foreach ($assoc_array as $key => $value) {
//do something
}
Esto funcionará bien con matrices no asociativas también. $ clave será el valor del índice. Si lo prefieres, puedes hacer esto también:
foreach ($array as $indx => $value) {
//do something
}
Owen tiene una buena respuesta. Si solo desea la clave, y está trabajando con una matriz, esto también podría ser útil.
foreach(array_keys($array) as $key) {
// do stuff
}
Puede crear $i
fuera del bucle y hacer $i++
en la parte inferior del bucle.
Puede poner un hack en su foreach
, como un campo incrementado en cada recorrido, que es exactamente lo que el bucle for
le da en una matriz indexada numéricamente. Tal campo sería un pseudoindex que necesita administración manual (incrementos, etc.).
A foreach
le dará su índice en la forma de su valor de $key
, por lo que no debería ser necesario un hack.
por ejemplo, en un foreach
$index = 0;
foreach($data as $key=>$val) {
// Use $key as an index, or...
// ... manage the index this way..
echo "Index is $index/n";
$index++;
}
foreach($array as $key=>$value) {
// do stuff
}
$key
es el índice de cada elemento $array
foreach($arrvariable as $key=>$value){
echo "$key";
}
foreach(array_keys($array) as $key) {
// do stuff
}