反过来我的意思是:
$my_array = array(
"header" => array(
0 => "Header 1",
1 => "Header 2"
),
"paragraph" => array(
0 => "Paragraph 1",
1 => "Paragraph 2"
)
);
到此:
$my_new_array = array(
0 => array(
"header" => "Header 1",
"paragraph" => "Paragraph 1"
),
1 => array(
"header" => "Header 2",
"paragraph" => "Paragraph 2"
)
);
我知道我可以这样做:
$my_new_array = array();
foreach ( $my_array["header"] as $key => $header ){
if ( !is_array( $my_new_array[ $key ] ) ){
$my_new_array[ $key ] = array();
}
$my_new_array[ $key ]["header"] = $header;
}
foreach ( $my_array["paragraph"] as $key => $paragraph ){
$my_new_array[ $key ]["paragraph"] = $paragraph;
}
但我想知道是否有一个快速的PHP函数来执行此操作或更优化的方式。我在PHP函数目录中找不到任何这样的函数,我想不出更优化的方法!
干杯
答案 0 :(得分:3)
这可以在不使用具体键的情况下工作:
$new = array();
foreach ($my_array as $key => $values) {
foreach ($values as $idx => $value) {
$new[$idx][$key] = $value;
}
}
答案 1 :(得分:1)
$my_new_array = array();
array_walk($my_array, function($innerArray, $key) use (&$my_new_array) {
foreach ($innerArray as $index => $val) {
$my_new_array[$index][$key] = $val;
}
});
...是我能想到的最好的,虽然它的写法基本相同。它具有更加动态的优点,因为没有明确指定键名。
答案 2 :(得分:1)
遗憾的是,没有内置函数可以执行此操作,但由于现有答案似乎有利于foreach
我正在将此候选人加入竞选中,并且议程中的array_walk
最多:
$result = array();
array_walk($array, function($rows, $propKey) use (&$result) {
array_walk($rows, function($val, $row) use($propKey, &$result) {
$result[$row][$propKey] = $val;
});
});