valor una recorrer multidimensional matriz matrices manejo llenar hacer eliminar elemento como buscar asociativo array 3x3 php arrays

recorrer - La mejor manera de borrar los valores de una matriz de PHP



recorrer array asociativo php (10)

¿Cuál es más eficiente para borrar todos los valores en una matriz? El primero me requeriría usar esa función cada vez en el ciclo del segundo ejemplo.

foreach ($array as $i => $value) { unset($array[$i]); }

O esto

foreach($blah_blah as $blah) { $foo = array(); //do something $foo = null; }


¿Qué tal $array_name = array(); ?


Al igual que Zack dijo en los comentarios a continuación, puedes volver a crear una instancia usando

$foo = array(); // $foo is still here

Si quieres algo más poderoso, usa el comando desarmado, ya que también borrará $ foo de la tabla de símbolos, si necesitas la matriz más adelante simplemente crea una instancia de nuevo.

unset($foo); // $foo is gone $foo = array(); // $foo is here again


Esto es unset potente y probado ($ gradearray); // restablece la matriz


He utilizado unset () para borrar la matriz, pero me he dado cuenta de que unset () hará que la matriz sea nula, por lo que es necesario volver a declarar la matriz como, por ejemplo,

<?php $arr = array(); array_push($arr , "foo"); unset($arr); // this will set the array to null hence you need the line below or redeclaring it. $arr = array();

// Haz lo que quieras aquí

?>


La función de unset es útil cuando el recolector de basura hace sus rondas sin tener un descanso para almorzar;

sin embargo, la función no configurada simplemente destruye la referencia variable a los datos, los datos aún existen en la memoria y PHP ve la memoria como en uso a pesar de que ya no tiene un puntero a ella.

Solución: asigne un null a sus variables para borrar los datos, al menos hasta que el recolector de basura lo tenga.

$var = null;

¡y luego desarmarlo de manera similar!

unset($var);


No está unset() lo suficientemente bueno?

unset($array);


Si solo desea restablecer una variable a una matriz vacía, simplemente puede reiniciarla:

$foo = array();

Tenga en cuenta que esto mantendrá cualquier referencia al mismo:

$foo = array(1,2,3); $bar = &$foo; // ... $foo = array(); // clear array var_dump($bar); // array(0) { } -- bar was cleared too!

Si quiere omitir cualquier referencia al mismo, primero desactívelo.

$foo = array(1,2,3); $bar = &$foo; // ... unset($foo); // break references $foo = array(); // re-initialize to empty array var_dump($bar); // array(3) { 1, 2, 3 } -- $bar is unchanged


Tristemente no puedo responder a las otras preguntas, no tengo suficiente reputación, pero necesito señalar algo que fue MUY importante para mí, y creo que también ayudará a otras personas.

Desarreglar la variable es una buena manera, a menos que necesites la referencia de la matriz original.

Para aclarar lo que quiero decir: si tiene una función que utiliza la referencia de la matriz, por ejemplo, una función de clasificación como

function special_sort_my_array(&$array) { $temporary_list = create_assoziative_special_list_out_of_array($array); sort_my_list($temporary_list); unset($array); foreach($temporary_list as $k => $v) { $array[$k] = $v; } }

¡no está trabajando! Tenga cuidado aquí, unset elimina la referencia, por lo que la variable $array se crea nuevamente y se completa correctamente, pero los valores no son accesibles desde fuera de la función.

Entonces, si tiene referencias, necesita usar $array = array() lugar de unset , incluso si es menos limpio y comprensible.


Use array_splice para vaciar una matriz y retener la referencia:

array_splice($myArray, 0);


Yo diría que el primero, si la matriz es asociativa. Si no, usa un ciclo for :

for ($i = 0; $i < count($array); $i++) { unset($array[$i]); }

Aunque si es posible, usando

$array = array();

Para restablecer la matriz a una matriz vacía es preferible.