Скинути ключі елементів масиву в 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
    ) 
)

Перевірте цей відповідь: stackoverflow.com/questions/5943149 / ...
Web_Developer

Відповіді:


294

Щоб скинути ключі всіх масивів у масиві:

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

Якщо ви просто хочете скинути клавіші масиву першого рівня, використовуйте array_values()без array_map.


9
Не змінив ключі мого масиву чомусь, довелося використовувати лише array_valuesфункцію.
SSH Це

1
@SSH Ви використовували його на масиві масивів , як тут закликали?
деге

1
Але це не проблема, я вважав, що це повинно було "Скинути ключі елементів масиву", це не так.
SSH Це

3
вам не потрібно використовувати array_map: $ ret = array_values ​​($ ret); достатньо для скидання цифрових клавіш
Марек Левандовський

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

Тут ви можете побачити різницю між способом, який пропонував обман у порівнянні з простим 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] => яблуко)


-7

Для цього існує нативна функція PHP. Дивіться http://php.net/manual/en/function.reset.php

Просто зробіть це: mixed reset ( array &$array )


4
Прочитайте інструкцію, до якої ви посилаєтесь; resetробить щось інше.
деге

Це просто перемістити вказівник на перший елемент масиву. Шукати теми Topicstarter, як відпустити клавіші у стан за замовчуванням 0, 1, 2 ... N.
SlowSuperman
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.