¿Realmente tengo que hacer para poner un array ??

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

EDICIÓN:

esto tiene más sentido, como la anterior es equivalente a $array=array();

foreach ($array as $i => $value) {
    $array[$i]=NULL;
}
  • array_map(function () { return ''; }, $array)
  • Véase también: equivalente de preguntas y respuestas para python stackoverflow.com/questions/22991888
  • Si todavía estás alrededor, por favor podría rechazar mi respuesta y aceptar un tipo más adecuado?
InformationsquelleAutor jfoucher | 2010-02-07

12 Comentarios

  1. 11

    Definir esta función y llamarla cada vez que la necesita:

    function erase_val(&$myarr) {
        $myarr = array_map(create_function('$n', 'return null;'), $myarr);
    }
    
    //It's call by reference so you don't need to assign your array to a variable.
    //Just call the function upon it
    erase_val($array);

    ¡Eso es todo!

    • Lo siento, pero este es por lejos la peor respuesta publicada – create_function() es básicamente eval() y definitivamente no debe ser utilizado para resolver un problema tan trivial como este. Además, una función para la que también es completamente excesivo. OMI, este no debe ser aceptada respuesta.
    • Esta respuesta es solo anticuado. Fue publicado en un momento se esta era la manera más confiable para lograr tales cosas. La mayoría de los webhosts aún estaban en PHP v5.0 en ese momento. Digamos que es un pedazo de historia.
    • La pieza de la historia … por cierto, pero todavía anticuado.
    • Correcto, pero «obsoleta» y «por mucho, la peor respuesta publicada» son dos capacidades diferentes…
  2. 47
    $keys = array_keys($array);
    $values = array_fill(0, count($keys), null);
    $new_array = array_combine($keys, $values);

    Obtener las Claves

    Obtener un conjunto de valores nulos con el mismo número de elementos

    Combinarlos, utilizando las teclas y las teclas, y de los valores nulos como los valores

    Como los comentarios sugieren, esto es fácil de PHP 5.2 con array_fill_keys

    $new_array = array_fill_keys(array_keys($array), null);
    • +1, estas funciones vienen en práctica muy a menudo. A partir de PHP 5.2 incluso hay array_fill_keys().
    • +1, tanto de las soluciones anteriores son más rápidos, array_combine ser el mejor entre los dos.
    • No. Porque funciona sólo después de PHP 5.2
    • Que utiliza PHP <= 5.2 a día de hoy 😀
    • href=»https://w3techs.com/technologies/details/pl-php/5/all» >w3techs.com/technologies/details/pl-php/5/all 10% 😀 es grande
  3. 24

    Llenar la matriz con llaves viejas y valores null

    $array = array_fill_keys(array_keys($array), null)

    • No está claro a partir de OP cuestión de si esto es realmente lo que él quería o deseaba – es lo que yo quería, así que +1 para proporcionar el más simple/corto posible solución.
  4. 9

    No hay acumulación en función de restablecimiento de una matriz a es simplemente claves.

    Una alternativa sería a través de una devolución de llamada y array_map():

    $array = array( 'a' => 'foo', 'b' => 'bar', 'c' => 'baz' );

    Regulares de la función de devolución de llamada

    function nullify() {}
    $array = array_map('nullify', $array);

    O con una lambda con PHP < 5.3

    $array = array_map(create_function('', ''), $array);

    O con lambda a partir de PHP 5.3

    $array = array_map(function() {}, $array);

    En todos los casos var_dump($array); salidas:

    array(3) {
      ["a"]=> NULL
      ["b"]=> NULL
      ["c"]=> NULL
    }
    • A la derecha. He cambiado las funciones. No es que está mal con su cuerpo y su argumento, pero ¿por qué añadir el desorden… Gracias.
    • array_fill_keys() es todavía más simple/el BESO de la solución. A pesar de que me gusta lambda versión demasiado.
  5. 4

    Voltear la matriz para obtener las claves, entonces da todas las claves que el valor NULL:

    array_fill_keys(array_flip($array), NULL);

    Sobre array_fill_keys():

    La array_fill_keys() función rellena una matriz con los valores, especificando
    teclas.

    Sobre array_flip():

    La array_flip() función voltea/intercambios todas las claves con sus
    valores asociados en una matriz.

  6. 2
    foreach($a as &$v)
       $v = null;

    El razonamiento detrás de la configuración de un elemento de matriz a nula es que la serie debe tener un valor para cada clave, de lo contrario una clave no tiene sentido. Es por eso que se llama una clave se utiliza para acceder a un valor. Un valor null parece una opción razonable aquí.

    Envuélvalo en una [reutilizables] procedimiento:

    function array_purge_values(&$a)
    {
        foreach($a as &$v)
           $v = null;
    }

    Tenga en mente que la versión de PHP a partir de 5.3 pasar valores a las funciones por referencia por defecto, es decir, el signo anterior argumento variable en la declaración de la función es redundante. No sólo eso, pero usted recibirá una advertencia de que el concepto es obsoleto.

    • Fácil sí, pero no es reutilizable. Un código como este apesta. Lo siento.
    • A continuación, basta con ponerla en una función y contaminan el ámbito global con el olor de otro modo usuario función
    • aefxx, que son muy bienvenidos a explicar por qué esto apesta. Esto no es una junta de revisión, la gente suele hacer a explicar sus argumentos aquí. He editado mi post para incluir exactamente lo que tal vez sentía que faltaba.
    • Él podría fácilmente poner esto en una clase de utilidad y lo llaman de forma estática a partir de ahí – no alcance global de la contaminación de ningún tipo. @amn Bien, el código hace el truco, seguro. Pero lo más probable es que el programador no comentar sobre qué está haciendo la anulación CADA vez que lo necesita. Así, la implementación de una función reutilizable y comentar de qué se trata (NO lo que hace, eso es obvio) es la mejor práctica. Además de eso, es más propensa a errores, como el programador podría tener un error CADA vez que escribe ese trozo de código (raro aquí, pero usted comprender el concepto).
    • Sí. Él podría haber hecho eso. Así que podría en su respuesta. Pero tú no. El punto es: @amn dio una solución para el problema en cuestión. Él ockham’ly omite todo lo que no sea relevante para la solución. Y usted le dice a su solución apesta. Eso es ridículo. El OP no pregunte por la posibilidad de reutilización y utiliza un foreach a sí mismo.
    • ¿Cómo iba a preguntar por lo que, obviamente, no tiene ninguna pista sobre? Es importante decirle a la gente a mirar más allá de su problema real y aprender a escribir código legible, reutilizable y de fácil mantenimiento. Ese es mi punto, nada más, nada menos.
    • Si quieres compartir un conocimiento más allá de que el problema real, entonces usted se anima a hacerlo, pero no le digas a la gente de sus respuestas hedor sólo porque no elegir. Especialmente, cuando las respuestas son perfectamente válidos. También, me parece bastante ofensivo y arrogante a insinuar que el OP es obviamente no se puede envolver un bucle foreach en una función o que él no es capaz de expresar un deseo para el diario un concepto como el de la reutilización.

  7. 1

    Si usted necesita para anular los valores de un array asociativo se puede caminar toda la matriz y hacer una devolución de llamada para establecer los valores a null, por lo que todavía tener teclas

    array_walk($ar,function(&$item){$item = null;});

    En caso si usted necesita para anular toda la matriz sólo reasignar a uno vacío

    $ar = array();
  8. 0

    No entiendo la pregunta bastante bien, pero su ejemplo

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

    es equivalente a

    $array = array();
    • Sí, eso es cierto, Las teclas se eliminan también… yo quería una función integrada para ello : foreach ($matriz as $i => $valor) { $matriz[$i]=NULL; }
  9. 0

    ¿Por qué no hacer un array con las claves necesarias y asinging a la variable cuando se desea restablecerla?

    function resetMyArr(&$arr)
    {
     $arr = array('key1'=>null,'key2'=>null); 
    }
  10. 0

    Esto es bastante viejo tema, pero desde que hace referencia a que antes de venir para arriba con mi propia solución, por un resultado, por lo tanto, voy a compartir con ustedes la solución.

    El resultado deseado era para que se anulen todos los valores, manteniendo las teclas,, y para buscar de forma recursiva en la matriz de la sub-arrays.

    DE FORMA RECURSIVA CONJUNTO DE MULTI-NIVEL DE LA MATRIZ DE VALORES NULL:

    function nullifyArray(&$arrayData) {
    
      if (is_array($arrayData)) {
        foreach ($arrayData as $aKey => &$aValue) {
          if (is_array($aValue)) {
            nullifyArray($aValue);
          } else {
            $aValue = null;
          }
        }
        return true;     //$arrayData IS an array, and has been processed.
      } else {
        return false;    //$arrayData is NOT an array, no action(s) were performed.
      }
    
    }

    Y aquí está en uso, junto con ANTES de y DESPUÉS de salida del contenido de la matriz.

    Código PHP para crear un negocio multinivel-matriz, y llamar a la nullifyArray() función:

    //Create a multi-level array.
    $testArray = array(
        'rootKey1'              =>  'rootValue1',
        'rootKey2'              =>  'rootValue2',
        'rootArray1'            =>  array(
            'subKey1'           =>  'subValue1',
            'subArray1'         =>  array(
                'subSubKey1'    =>  'subSubValue1',
                'subSubKey2'    =>  'subSubValue2'
            )
        )
    );
    
    //Nullify the values.
    nullifyArray($testArray); 

    ANTES de LLAMAR A nullifyArray():

    Array
    (
        [rootKey1] => rootValue1
        [rootKey2] => rootValue2
        [rootArray1] => Array
            (
                [subKey1] => subValue1
                [subArray1] => Array
                    (
                        [subSubKey1] => subSubValue1
                        [subSubKey2] => subSubValue2
                    )
    
            )
    
    )

    DESPUÉS de LLAMAR A nullifyArray():

    Array
    (
        [rootKey1] => 
        [rootKey2] => 
        [rootArray1] => Array
            (
                [subKey1] => 
                [subArray1] => Array
                    (
                        [subSubKey1] => 
                        [subSubKey2] => 
                    )
    
            )
    
    )

    Espero que ayude a alguien/nadie, y Gracias a todos los que anteriormente respondió a la pregunta.

  11. -1

    Basta con hacer:

    $arrayWithKeysOnly = array_keys($array);

    http://php.net/manual/en/function.array-keys.php

    EDICIÓN: Abordar comentario:

    Aceptar y, a continuación, hacer esto:

    $arrayWithKeysProper = array_flip(array_keys($array));

    http://www.php.net/manual/en/function.array-flip.php

    EDIT: en Realidad, pensando en ello, que probablemente no funciona bien.

    • Se devuelve un array con las claves de los valores y no es lo que el OP quiere. Él quiere guardar las llaves y acaba de purgar los valores
    • array_flip no hacen bien, porque los valores de la matriz sería ascendente entonces, por ejemplo, ‘a’ => 0, ‘b’ => 1 y así sucesivamente
    • sí, yo diría que tienes que caminar.
    • haciendo esto y conseguir un bug fue exactamente lo que me trajo a esta página 🙂 -1

Dejar respuesta

Please enter your comment!
Please enter your name here