Zresetować klucze elementów tablicy w php?

124

Pytanie brzmi jak zresetować klucz np. Dla tablicy:

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

zresetuj do:

Array ( 
    [1_Name] => Array ( 
        [0] => leo 
        [1] => NULL 
    ) 
    [1_Phone] => Array ( 
        [0] => 12345 
        [1] => 434324
    ) 
)
Leo Chan
źródło
Sprawdź tę odpowiedź: stackoverflow.com/questions/5943149/ ...
Web_Developer

Odpowiedzi:

295

Aby zresetować klucze wszystkich tablic w tablicy:

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

Jeśli chcesz po prostu zresetować klucze tablicowe pierwszego poziomu, użyj array_values()bez array_map.

zamrozić
źródło
9
Z jakiegoś powodu nie zresetowałem kluczy mojej tablicy, musiałem użyć tylko array_valuesfunkcji.
SSH To
1
@SSH Czy użyłeś go na tablicy tablic , jak zostało tutaj wezwane?
deceze
1
Nie, to był problem, myślałem, że to ma "zresetować klucze elementów tablicy", ale tak nie jest.
SSH To
3
nie musisz używać array_map: $ ret = array_values ​​($ ret); wystarczy zresetować klawisze numeryczne
Marek Lewandowski
2
Nie wiem, czy użycie wartości array_values ​​do resetowania wartości jest udokumentowane, ale powinno. To naprawdę pomogło zmniejszyć liczbę linii, które pisałem :)
carbontwelve
193
$array[9] = 'Apple';
$array[12] = 'Orange';
$array[5] = 'Peach';

$array = array_values($array);

dzięki tej funkcji możesz zresetować macierz

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

źródło
To rozwiązanie zadziałało dla mnie
Amirhossein Tarmast
8

Tutaj możesz zobaczyć różnicę między sposobem oferowanym przez deceze a prostym array_valuespodejściem:

Tablica:

$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);

W ten decezesposób, oto wynik:

$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
                )
        )
)

A oto wynik, jeśli używasz tylko array_valuesfunkcji:

$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
źródło
5
$result = ['5' => 'cherry', '7' => 'apple'];
array_multisort($result, SORT_ASC);
print_r($result);

Tablica ([0] => jabłko [1] => wiśnia)

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

Tablica ([0] => wiśnia [1] => jabłko)

Skecz
źródło
-7

W tym celu istnieje natywna funkcja PHP. Zobacz http://php.net/manual/en/function.reset.php

Po prostu zrób to: mixed reset ( array &$array )

William Espindola
źródło
4
Przeczytaj instrukcję, do której tworzysz łącze; resetrobi coś innego.
deceze
Wystarczy przesunąć wskaźnik do pierwszego elementu tablicy. Topicstarter wyszukiwanie sposób upuszczania kluczy w stanie domyślnym 0, 1, 2 ... N.
SlowSuperman