我有一个数组键值对。我需要从此键和值对创建新数组。例如
我尝试过foreach循环
foreach($array as $key => $val){
// here i m getting key and value i want to combine key and value in single array
}
Array
(
'146' => Array
(
'sam' => Array (
'dex',
'max'
)
)
'143' => Array
(
'tim' => Array (
'thai',
'josh'
)
)
)
预期的输出是作为第一个元素的按键
$out = [
[ 'sam', 'dex', 'max'],
[ 'tim','thai', 'josh']
];
答案 0 :(得分:2)
您可以将array-merge用作:
foreach($array as $key => $val)
$out[] = array_merge([$key], $val);
请注意,在您的示例中,您还具有另一个级别的键(“ 146”,“ 143”)->在使用此代码之前,需要将其删除。
已编辑:
foreach($arr as $val) {
$key = key($val);
$out[] = array_merge([$key], $val[$key]);
}
实时示例:3v4l
答案 1 :(得分:0)
那呢?
$output = [];
foreach($array as $key => $val) {
$data = $val;
array_unshift($data, $key);
$output[] = $data;
}
答案 2 :(得分:0)
代码:
<?php
$arr = Array(
'146' => Array
(
'sam' => Array (
'dex',
'max'
)
),
'143' => Array
(
'tim' => Array (
'thai',
'josh'
)
)
);
$result = [];
foreach($arr as $key => $value){
$flat_data = [];
flattenArray($value,$flat_data);
$result[] = $flat_data;
}
function flattenArray($data,&$flat_data){
foreach ($data as $key => $value) {
if(is_array($value)){
$flat_data[] = $key;
flattenArray($value,$flat_data);
}else{
$flat_data[] = $value;
}
}
}
print_r($result);
因为我们传递了一个新的数组来收集结果作为第二个参数,所以它的效果要好于在每次函数调用时返回结果数组,然后执行数组合并(这会使效率低下) )。
这将与关卡深度无关。