重新索引数字嵌套数组键

时间:2017-01-15 09:10:57

标签: php arrays

这是我的阵列:

$arr = [
        1 => [
              2 => "something",
              3 => "something else"
            ],
        2 => "foo br"
    ];

我需要重启所有密钥并从0启动所有密钥。基于一些研究,我发现我必须使用array_values()函数。但它只是使外部数组的键重新索引See

如何将它应用于数组的所有键? (甚至是嵌套的)

3 个答案:

答案 0 :(得分:4)

您可以使用array_values + recursively calling自定义功能:

function arrayValuesRecursive($array) {
    $array = array_values($array);
    $countValues = count($array);
    for ($i = 0; $i < $countValues; $i++ ) {
        $subElement = $array[$i];
        if (is_array($subElement)) {
            $array[$i] = arrayValuesRecursive($subElement);
        }
    }
    return $array;
}

$restructuredArray = arrayValuesRecursive($array);

答案 1 :(得分:2)

您可以使用这样的递归来实现它:

populationData.get(2017).put("Botswana", 45982637);

答案 2 :(得分:1)

您好以下代码

结帐
<?php
    $arr = [
        1 => [
            2 => "something",
            3 => "something else"
        ],
        2 => "foo br"
    ];

    $reIndexedArray = array();
    foreach($arr as $arrItr){
        $reIndexedArray[] = count($arrItr) > 1 ? array_values($arrItr) : $arrItr;
    }
    print_r($reIndexedArray);
?>

输出

Array
(
    [0] => Array
        (
            [0] => something
            [1] => something else
        )

    [1] => foo br
)