Schlüssel von Array-Elementen in PHP zurücksetzen?

124

Die Frage ist, wie der Schlüssel zurückgesetzt werden kann, z. B. für ein Array:

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

zurückgesetzt auf:

Array ( 
    [1_Name] => Array ( 
        [0] => leo 
        [1] => NULL 
    ) 
    [1_Phone] => Array ( 
        [0] => 12345 
        [1] => 434324
    ) 
)
Leo Chan
quelle
Überprüfen Sie diese Antwort: stackoverflow.com/questions/5943149/…
Web_Developer

Antworten:

294

So setzen Sie die Schlüssel aller Arrays in einem Array zurück:

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

Wenn Sie nur Array-Schlüssel der ersten Ebene zurücksetzen möchten, verwenden Sie array_values()ohne array_map.

täuschen
quelle
9
Habe aus irgendeinem Grund die Tasten meines Arrays nicht zurückgesetzt, musste nur die array_valuesFunktion verwenden.
SSH Dies ist der
1
@SSH Haben Sie es für ein Array von Arrays verwendet , wie hier gefordert?
Täuschung
1
Nein, das war das Problem, ich dachte, dies sollte "die Schlüssel von Array-Elementen zurücksetzen", tut es nicht.
SSH Dies
3
Sie müssen array_map nicht verwenden: $ ret = array_values ​​($ ret); reicht aus, um die Zifferntasten zurückzusetzen
Marek Lewandowski
2
Ich weiß nicht, ob die Verwendung von array_values ​​zum Zurücksetzen von Werten dokumentiert ist, sollte es aber sein. Dies hat wirklich dazu beigetragen, die Anzahl der Zeilen, die ich schrieb, zu
reduzieren
192
$array[9] = 'Apple';
$array[12] = 'Orange';
$array[5] = 'Peach';

$array = array_values($array);

Über diese Funktion können Sie Ihr Array zurücksetzen

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

quelle
Diese Lösung hat bei mir funktioniert
Amirhossein Tarmast
17

Verwenden Sie array_valuesdiese Taste, um die Tasten zurückzusetzen

foreach($input as &$val) {
   $val = array_values($val);
}

http://php.net/array_values

Andreas Wong
quelle
8

Hier sehen Sie den Unterschied zwischen der Art und Weise, wie Täuschung angeboten wird, und dem einfachen array_valuesAnsatz:

Das Array:

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

In decezegewisser Weise ist hier Ihre Ausgabe:

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

Und hier ist Ihre Ausgabe, wenn Sie nur die array_valuesFunktion verwenden:

$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
quelle
5
$result = ['5' => 'cherry', '7' => 'apple'];
array_multisort($result, SORT_ASC);
print_r($result);

Array ([0] => Apfel [1] => Kirsche)

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

Array ([0] => Kirsche [1] => Apfel)

Sketch
quelle
-7

Hierfür gibt es eine native PHP-Funktion. Siehe http://php.net/manual/en/function.reset.php

Mach das einfach: mixed reset ( array &$array )

William Espindola
quelle
4
Bitte lesen Sie das Handbuch, auf das Sie verlinken. resetmacht etwas anderes.
Täuschung
Bewegen Sie einfach den Zeiger auf das erste Element des Arrays. Topicstarter-Suchmethode zum Löschen von Schlüsseln im Standardzustand 0, 1, 2 ... N.
SlowSuperman