重置PHP中数组元素的键?


124

问题是如何重置密钥(例如,对于数组):

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

重置为:

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

Answers:


294

要重置数组中所有数组的键:

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

如果您只想重置第一级数组键,请使用array_values()不带array_map


9
由于某种原因没有重置数组的键,只需要使用该array_values函数即可。
SSH 2013年

1
@SSH是否按要求在数组数组上使用它?
deceze

1
不,那是问题所在,我认为这应该是“重置数组元素的键”,但事实并非如此。
SSH

3
您不需要使用array_map:$ ret = array_values($ ret); 足以重置数字键
Marek Lewandowski

2
我不知道是否有使用array_values重置值的记录,但应该记录。这确实有助于减少我所写的行数:)
carbontwelve

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

$array = array_values($array);

通过此功能,您可以重置阵列

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

此解决方案为我工作
Amirhossein Tarmast


8

在这里,您可以看到deceze提供的方式与简单array_values方式之间的区别:

数组:

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

deceze方式,这里就是你的输出:

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

如果仅使用array_values函数,则这是您的输出:

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

数组([0] =>苹果[1] =>樱桃)

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

数组([0] =>樱桃[1] =>苹果)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.