PHP数组结构更改
这不应该让我很困惑,但我希望能扭转这一局面:PHP数组结构更改,php,arrays,loops,multidimensional-array,Php,Arrays,Loops,Multidimensional Array,这不应该让我很困惑,但我希望能扭转这一局面: array:3 [▼ "subject" => array:2 [▼ 0 => "math" 1 => "english" ] "grade" => array:2 [▼ 0 => "a" 1 => "b" ] "received" => array:2 [▼ 0 => "2017" 1 => "20
array:3 [▼
"subject" => array:2 [▼
0 => "math"
1 => "english"
]
"grade" => array:2 [▼
0 => "a"
1 => "b"
]
"received" => array:2 [▼
0 => "2017"
1 => "2016"
]
]
为此:
array:2 [▼
"0" => array:3 [▼
"subject" => "math"
"grade" => "a"
"received" => "2017"
]
"1" => array:3 [▼
"subject" => "english"
"grade" => "b"
"received" => "2016"
]
]
尝试了两种不同的方式循环,但似乎从未得到我想要的结果,任何帮助都将不胜感激
$keys = array_keys($array);
$result = array_map(
function (...$values) use ($keys) { return array_combine($keys, $values); },
...array_values($array)
);
基本上是这样,但重复性较少:
array_map(
function ($subject, $grade, $received) {
return [
'subject' => $subject,
'grade' => $grade,
'received' => $received
];
},
$array['subject'],
$array['grade'],
$array['received']
)
有关更多说明,请参阅手册和
基本上是这样,但重复性较少:
array_map(
function ($subject, $grade, $received) {
return [
'subject' => $subject,
'grade' => $grade,
'received' => $received
];
},
$array['subject'],
$array['grade'],
$array['received']
)
有关详细说明,请参阅手册。简单版本:
$arr1 = array(...);
$arr2 = array();
foreach ($arr1 as $k => $v) {
foreach ($v as $x => $y) {
$arr2[$x][$k] = $y;
}
}
但您应该添加条件,如果数组元素不存在,请创建它,否则可能会出错,具体取决于您的PHP配置。简单版本:
$arr1 = array(...);
$arr2 = array();
foreach ($arr1 as $k => $v) {
foreach ($v as $x => $y) {
$arr2[$x][$k] = $y;
}
}
但是您应该添加条件,如果数组元素不存在,则创建它,否则可能会出现错误,具体取决于您的PHP配置。如何显示其中一个循环?如何显示其中一个循环?第一种方法抛出错误“array_combine():两个参数的元素数应该相等”,但第二种方法效果很好,感谢@decezeFirst way抛出了一个错误“array_combine():两个参数的元素数应该相等”,但是第二个答案工作得很好,感谢@decezeFirst way您指的是
$arr2[$x][$k]=…
创建错误吗?不,永远不会。显式支持隐式中间数组创建。您是指$arr2[$x][$k]=…
创建错误吗?不,永远不会。显式支持隐式中间数组创建。