Array Methods

Array Methods

Operaciones sobre array

count

Permite contar el número de elementos en un array.

$number_elements = [1, 2, 3, 4, 5,];
echo count($number_elements); // 5

current - end - reset

Permite mover el puntero a diferentes posiciones dentro de un array y devuelve el elemento al cual está apuntando el puntero

// **current**
$number_elements = [1, 2, 3, 4, 5,];
$actual = current($number_elements);
 // La posicion inicial es 0 asi que devuelve = 1
 
// **end** 
$final = end($number_elements); 
// devuelve la ultima posicion = 5;

// **reset**
$initial = reset($number_elements); 
// resetea el puntero, vuelve a posicion inicial

Permite buscar en un array por un contenido. Si lo encuentra devuelve el índice de la primera coincidencia. Sino lo encuentra devuelve false, sensible a mayusculas y minusculas

$dias = array("lunes", "martes", "miercoles", "jueves", "viernes", "sabado", "domingo");
$search_result_index = array_search("viernes", $dias);

if($search_result_index){
    echo "Elemento encontrado en la posicion $search_result_index";
}else{
    echo "Elemento no encontrado";
}

in_array

Devuelve true si el elemento está en el array, sino devuelve false

in_array("lunes",$dias);
// true o false, dependiendo de si encuentra el elemento en el array
 
in_array("lunes", $dias, true); 
//strict mode, comprueba que el tipo sea el mismo tambien

Ordenar arrays

sort or rsort(inversa)

Ordena los elementos, cambiandoles también la posición

// Ordena el contenido de forma alfabetica, tener en cuenta que los primeros 
// elementos son movidos al principio del array, por lo que el valor[0] no sera 
//el mismo valor despues de ordenar
$diasSemana = array("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo");
sort($diasSemana);
var_dump($diasSemana);

asort

Ordena los elementos pero siguen teniendo el mismo índice

$diasSemana = array("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo");
asort($diasSemana);
var_dump($diasSemana);

ksort

Ordena el array pero por las claves, en un array indexado no hace nada. Pero en los arrays asociativos se ordena por la key

$numeros_asociativos = array(3 => "Tres", 2 => "Dos", 1 => "Uno");
ksort($numeros_asociativos);
var_dump($numeros_asociativos);

shuffle

Cambia el orden del array de forma aleatoria, cambiando también sus índices

$numeros_ordenados = array(1,2,3,4,5,6,7,8,9);
shuffle($numeros_ordenados);
var_dump($numeros_ordenados);

explode

Divide una cadena en varias cadenas, separandola por un delimitador. Si no se especifica el delimitador o es una cadena sin nada, devuelve error. El limite puede ser tanto positivo como negativo. un -1 en el limite devuelve todos los elementos menos el ultimo

An empty input string will still result in one element in the output array. This is something to remember when you are processing unknown input

// Explode
$cadena = 'Hello World';
$expl = explode(' ', $cadena, 1);
var_dump($expl); // ['Hello']

$cadena = 'Hello World que';
$expl = explode(' ', $cadena, -1);
var_dump($expl); // ['Hello', 'World']

implode

Junta todos los elementos de un array, en una cadena, especificando el separador.

//Implode
$array = array('Hello', 'World');
$cadena = implode(',', $array);
echo $cadena; // Hello,World

Modificar un array

push & pop & unshift &shift

Las principales funciones para modificar un array son las mismas que para javascript.

push -> añade al final

pop -> quita del final unshift -> añade al principio

shift -> quita del principio

$numeros = [1, 2, 3,];
array_push($numeros, 4); // [1, 2, 3, 4]
array_pop($numeros); // [1, 2, 3]
array_unshift($numeros, 0); // [0, 1, 2, 3]
array_shift($numeros); // [1, 2, 3]
var_dump($numeros);

Operaciones entre arrays

array_diff

Devuelve todos los elementos del primer array, que no están en los siguientes arrays. Con que el elemento exista en algún array, ese elemento no lo devuelve. Solamente devuelve el elemento que no existe en ninguno de los otros arrays

// Ejemplo con array indexado
$numeros1 = array(11, 22, 33);
$numeros2 = array(11, 33, 55);
$numeros3 = array(10, 9, 8);
$diferenciasNumeros = array_diff($numeros1,$numeros2, $numeros3); // 22
// El unico elemento que no esta en los otros arrays es el 22
var_dump($diferenciasNumeros);

// Ejemplo con array asociativo
// Los elementos string tienen que coincidir exactamente
$colores1 = array("color1" => "Verde", "color2" => "Azul", "color3" => "Naranja");
$colores2 = array("color1" => "verde", "color2" => "Amarillo", "color3" => "Naranja");
$diferenciasColores = array_diff($colores1, $colores2); // [Verde, Azul]
// El verde no coincide exactamente y el azul no esta en el otro array
var_dump($diferenciasColores);

array_merge

Permite unir dos o más arrays. Cada array es añadido al final del primer array en orden.

// array_merge
$a = array("Verde", "Azul");
$b = array("Rojo", "Naranja");
$c = array("Sin color1", "Sin color2");

$union = array_merge($a, $b, $c);
var_dump($union);

array_intersect

Devuelve todos los elementos comunes de varios arrays

$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];
$array3 = [5, 6, 7, 8, 9];

$resultado = array_intersect($array1, $array2, $array3);

print_r($resultado); 

// resultado
Array
(
    [4] => 5 // El 5 esta presente en todos los arrays
)