我试图制作代码来组织一个数组。我有这段代码:
$arr = array(0=>array('key 1'=>'value 1', 'key 2'=>'value 2', 'key 3'=> array('2'=>'more values 1', '5'=>'more values 2', 7=>'more values 3')),
2=>array(0=>'value 1', 2=>'value 2', 4=> array('key 2'=>'more values 1', 'key 5'=>'more values 2', 'key 7'=>'more values 3')));
echo print_r($arr);
收率:
Array
(
[0] => Array
(
[key 1] => value 1
[key 2] => value 2
[key 3] => Array
(
[2] => more values 1
[5] => more values 2
[7] => more values 3
)
)
[2] => Array
(
[0] => value 1
[2] => value 2
[4] => Array
(
[key 2] => more values 1
[key 5] => more values 2
[key 7] => more values 3
)
)
)
我希望可以使用array_values()
重命名整数键。数组需要输出如下:
Array
(
[0] => Array
(
[key 1] => value 1
[key 2] => value 2
[key 3] => Array
(
[0] => more values 1
[1] => more values 2
[2] => more values 3
)
)
[1] => Array
(
[0] => value 1
[1] => value 2
[2] => Array
(
[key 2] => more values 1
[key 5] => more values 2
[key 7] => more values 3
)
)
)
但遗憾的是,我无法制作有效的代码。
答案 0 :(得分:2)
您需要这样做是非常罕见的,因为您可以访问数组元素而无需增加键,例如使用foreach()
。但这是一个递归函数:
function array_reindex_recursive(&$array) {
if(is_int(key($array))) {
$array = array_values($array);
}
foreach($array as $key => &$val) {
if(is_array($val)) {
array_reindex_recursive($val);
}
}
}
array_reindex_recursive($arr);
array_values()
重新索引如果你想确保所有的键都是整数,那么用这样的东西替换第一个if
:
if(count(array_filter(array_keys($array), 'is_int')) == count($array)) {
$array = array_values($array);
}
array_values()
以重新索引