我有一个看起来像这样的数组:
array(3) {
["title"]=>
array(3) {
[0]=>
string(3) "one"
[1]=>
string(3) "two"
[2]=>
string(4) "test"
}
["file"]=>
array(3) {
[0]=>
string(25) "company_handbook_2011.pdf"
[1]=>
string(8) "test.doc"
[2]=>
string(8) "test.doc"
}
["status"]=>
array(3) {
[0]=>
string(4) "SHOW"
[1]=>
string(4) "HIDE"
[2]=>
string(4) "HIDE"
}
}
如何重新排列它看起来像这样:
array(
array(
"one",
"company_handbook_2011.pdf",
"SHOW"
),
array(
"two",
"test.doc",
"HIDE"
),
array(
"test",
"test.doc",
"HIDE"
),
)
即获取每个数组的第一个元素并构建一个新数组,然后构建第二个元素,依此类推。非常感谢你的帮助。
答案 0 :(得分:3)
您要搜索的内容称为矩阵的转置。以下是StackOverflow的上一个答案:
Is there better way to transpose a PHP 2D array?
我冒昧直接从该线程复制解决方案($ array_of_arrays是你的原始数组,$ transposed_array是结果):
$transposed_array = call_user_func_array('array_map', array_merge(array(NULL), $array_of_arrays));
答案 1 :(得分:0)
foreach ($origArray['title'] as $k => $title) {
$flatArr[] = array($title, $origArray['file'][$k], $origArray['status'][$k]);
}