jueves, 4 de agosto de 2016

Recorrer arreglos (array) en PHP

Con foreach

Si tienes un arreglo de este tipo:
$array = array(1234);

Lo puedes recorrer así:

foreach ($array as $valor) {
   
echo "Valor: $valor<br />\n";
}


Si deseas ver el número de la clave:
foreach ($array as $clave => $valor) {
    echo 
"Clave: $clave; Valor: $valor<br />\n";
}


Con while
Es para cuando sabes el número de veces que quieres recorrer el arreglo:

$i 1;
while ($i <= 10){
    echo 
$i;
    
$i++;
}

Un solo resultado: Con list() y mysql_fetch_row() 

Alguna vez te puede ocurrir que sea una consulta MYSQL con un sólo resultado.
En ese caso puedes usar list() y mysql_fetch_row() para obtener ese único resultado:

$sql = "SELECT email FROM usuarios WHERE id = 10";
$resultado = mysql_query($sql,$link);
$num = mysql_num_rows($resultado);

//Si sólo hay un email
if($num == 1){list($email_de_cliente) = mysql_fetch_row($resultado);}

echo "El email del clientes es: $email_de_cliente";


Con varios registros en el resultado:
while($row = mysql_fetch_array($resultado )){
echo $row['email'];
}

Contando repeticiones en un array:
Si tienes un arreglo como este: $array = array("ACCESOPERU.COM", "ACTIVATUHOSTING.COM",
"AREADESOPORTE.COM", "ACTIVATUHOSTING.COM",
"ACTIVATUHOSTING.COM", "AREADESOPORTE.COM"); Puedes usar la función array_count_values para contar los valores repetidos. Ejemplo:
echo "<pre>"; print_r(array_count_values($array)); echo "</pre>";

El resultado será:
Array ( [ACCESOPERU.COM] => 1 [ACTIVATUHOSTING.COM] => 3 [AREADESOPORTE.COM] => 2 )

Reordenar aleatoriamente un array:
Para eso puedes usar shuffle(). Y para obtener el primer elemento ordenado aleatoriamente current():
shuffle($array);
$primer_elemento_aleatorio = current($array);

Más sobre current() click aquí.
Dividir un array en subarrays:
Para eso puedes usar array_chunk:
$array_en_pares = array_chunk($array, 2); En este caso el 2 indica que se dividirá el array en sub arrays de 2 elementos.
Borrar un elemento de un array:
Para eso puedes usar unset:
unset($array[2]); En este caso borra el tercer elemento del array.


Borrar ÚLTIMO elemento de un array:
Para eso puedes usar array_pop:
$ultimo_elemento = array_pop($array); En este caso el array pierde el último elemento y ese elemento es asignado a $ultimo_elemento.