Réinitialiser les clés des éléments du tableau en php?

124

La question est de savoir comment réinitialiser la clé, par exemple pour un tableau:

Array ( 
    [1_Name] => Array ( 
        [1] => leo 
        [4] => NULL 
    ) 
    [1_Phone] => Array ( 
        [1] => 12345 
        [4] => 434324
    )  
)

réinitialiser à:

Array ( 
    [1_Name] => Array ( 
        [0] => leo 
        [1] => NULL 
    ) 
    [1_Phone] => Array ( 
        [0] => 12345 
        [1] => 434324
    ) 
)
Leo Chan
la source
Vérifiez cette réponse: stackoverflow.com/questions/5943149/…
Web_Developer

Réponses:

295

Pour réinitialiser les clés de tous les tableaux d'un tableau:

$arr = array_map('array_values', $arr);

Si vous souhaitez simplement réinitialiser les clés de tableau de premier niveau, utilisez array_values()sans array_map.

déceler
la source
9
Je n'ai pas réinitialisé les touches de mon tableau pour une raison quelconque, j'ai dû utiliser uniquement la array_valuesfonction.
SSH ce
1
@SSH L'avez-vous utilisé sur un tableau de tableaux , comme cela a été demandé ici?
deceze
1
Non, c'était le problème, je pensais que c'était censé "réinitialiser les clés des éléments du tableau", ce n'est pas le cas.
SSH ce
3
vous n'avez pas besoin d'utiliser array_map: $ ret = array_values ​​($ ret); suffit pour réinitialiser les touches numériques
Marek Lewandowski
2
Je ne sais pas si l'utilisation de array_values ​​pour réinitialiser les valeurs est documentée, mais cela devrait l'être. Cela a vraiment aidé à réduire le nombre de lignes que j'écrivais :)
carbontwelve
193
$array[9] = 'Apple';
$array[12] = 'Orange';
$array[5] = 'Peach';

$array = array_values($array);

grâce à cette fonction, vous pouvez réinitialiser votre tableau

$array[0] = 'Apple';
$array[1] = 'Orange';
$array[2] = 'Peach';

la source
Cette solution a fonctionné pour moi
Amirhossein Tarmast
8

Ici, vous pouvez voir la différence entre la façon dont ce deceze a offert par rapport à l' array_valuesapproche simple :

Le tableau:

$array['a'][0] = array('x' => 1, 'y' => 2, 'z' => 3);
$array['a'][5] = array('x' => 4, 'y' => 5, 'z' => 6);

$array['b'][1] = array('x' => 7, 'y' => 8, 'z' => 9);
$array['b'][7] = array('x' => 10, 'y' => 11, 'z' => 12);

En decezechemin, voici votre sortie:

$array = array_map('array_values', $array);
print_r($array);

/* Output */

Array
(
    [a] => Array
        (
            [0] => Array
                (
                    [x] => 1
                    [y] => 2
                    [z] => 3
                )
            [1] => Array
                (
                    [x] => 4
                    [y] => 5
                    [z] => 6
                )
        )
    [b] => Array
        (
            [0] => Array
                (
                    [x] => 7
                    [y] => 8
                    [z] => 9
                )

            [1] => Array
                (
                    [x] => 10
                    [y] => 11
                    [z] => 12
                )
        )
)

Et voici votre sortie si vous n'utilisez que la array_valuesfonction:

$array = array_values($array);
print_r($array);

/* Output */

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [x] => 1
                    [y] => 2
                    [z] => 3
                )
            [5] => Array
                (
                    [x] => 4
                    [y] => 5
                    [z] => 6
                )
        )
    [1] => Array
        (
            [1] => Array
                (
                    [x] => 7
                    [y] => 8
                    [z] => 9
                )
            [7] => Array
                (
                    [x] => 10
                    [y] => 11
                    [z] => 12
                )
        )
)
Mahdi
la source
5
$result = ['5' => 'cherry', '7' => 'apple'];
array_multisort($result, SORT_ASC);
print_r($result);

Array ([0] => pomme [1] => cerise)

//...
array_multisort($result, SORT_DESC);
//...

Tableau ([0] => cerise [1] => pomme)

Sketch
la source
-7

Une fonction native PHP existe pour cela. Voir http://php.net/manual/en/function.reset.php

Faites simplement ceci: mixed reset ( array &$array )

William Espindola
la source
4
Veuillez lire le manuel auquel vous créez un lien; resetfait autre chose.
deceze
Il s'agit simplement de déplacer le pointeur vers le premier élément du tableau. Topicstarter recherche moyen de déposer les clés dans l'état par défaut 0, 1, 2 ... N.
SlowSuperman