PHP数组重新安排

时间:2011-04-07 15:38:03

标签: php arrays

我有一个看起来像这样的数组:

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"
    ),      
)

即获取每个数组的第一个元素并构建一个新数组,然后构建第二个元素,依此类推。非常感谢你的帮助。

2 个答案:

答案 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]);
}