Duda sobre PHP

Hola ditman:
Como ya me respondiste una vez y me gustó tu respuesta, te he elegido como experto.
Ahíva la pregunta:
<?php
$ciudades = array ("Badajoz","Mérida","Cáceres","Plasencia");
$ciudades["España"] = "Madrid";
$ciudades["Portugal"] = "Lisboa";
$ciudades["Francia"] = "Paris";
function recorrer($ciudades) {
if (!current($ciudades)) {      <-- Esta
reset($ciudades);
}
do {
$valor= current($ciudades);
echo "El valor es: $valor<br>";
}
while(next($ciudades));
}
?>
El código es correcto y me sale bien, lo que no entiendo muy bien es cómo actúa la línea
Indicada. Si me lo puedes explicar para que lo entienda, digamos en lenguaje coloquial.
{"lat":38.1548577520912,"lng":-0.894784927368164}

1 respuesta

Respuesta
1
La función current devuelve el elemento al que está apuntando el puntero interno en el array $ciudades.
Ese puntero se inicializa al primer elemento del array con la función reset, y se incrementa en la función next del bucle while.
Hola ditman:
Lo cierto es que me he quedado igual.
El símbolo exclamación significa diferente ¿no?
Lo que no entiendo es por qué debería ser diferente, es decir, para que el puntero se
Inicialice al primer elemento se debe dar la condición: if (! current($ciudades)) .
No entiendo bien el papel del operador ! .
Current($ciudades) devuelve el elemento al que está apuntando el puntero interno.
Si se llama a current sin haber inicializado primero el puntero interno, la función devolverá null.
En PHP null se puede convertir a un valor booleano: false.
Lo que se está haciendo con ! Es negar ese valor booleano: Si current devuelve 'false', entra en el if y haz reset al array.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas