Reimpostare le chiavi degli elementi dell'array in php?


124

La domanda è come reimpostare la chiave, ad esempio per un array:

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

reimposta su:

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

Risposte:


295

Per ripristinare le chiavi di tutti gli array in un array:

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

Nel caso in cui si desideri ripristinare le chiavi dell'array di primo livello, utilizzare array_values()senza array_map.


9
Non ho ripristinato i tasti del mio array per qualche motivo, ho dovuto usare solo la array_valuesfunzione.
SSH questo

1
@SSH L'hai usato su un array di array , come è stato chiamato qui?
inganno

1
No, questo era il problema, pensavo che questo avrebbe dovuto "Reimpostare le chiavi degli elementi dell'array", non è così.
SSH questo

3
non è necessario utilizzare array_map: $ ret = array_values ​​($ ret); Basta azzerare i tasti numerici
Marek Lewandowski

2
Non so se l'uso di array_values ​​per il ripristino dei valori sia documentato, ma dovrebbe esserlo. Questo ha davvero aiutato a ridurre il numero di righe che stavo scrivendo :)
carbontwelve

193
$array[9] = 'Apple';
$array[12] = 'Orange';
$array[5] = 'Peach';

$array = array_values($array);

attraverso questa funzione puoi resettare il tuo array

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

Questa soluzione ha funzionato per me
Amirhossein Tarmast,


8

Qui puoi vedere la differenza tra il modo in cui l' inganno offerto rispetto array_valuesall'approccio semplice :

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

A decezeproposito, ecco il tuo output:

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

Ed ecco il tuo output se usi solo la array_valuesfunzione:

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

5
$result = ['5' => 'cherry', '7' => 'apple'];
array_multisort($result, SORT_ASC);
print_r($result);

Array ([0] => mela [1] => ciliegia)

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

Array ([0] => ciliegia [1] => mela)


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.