PHP中的特定数组操作


Specific array manipulation in PHP

考虑4个阵列:

$array1 = [
    0 => "Bill",
    1 => "John"
];
$array2 = [
    0 => "Gates",
    1 => "Wayne"
];
$array3 = [
    0 => "alive",
    1 => "dead"
];
$array1 = [
    0 => "man",
    1 => "man"
];

问题:我如何操作它们以获得这种结果:

$array5 = [
    0 => [
        0 => Bill,
        1 => Gates,
        2 => alive,
        3 => men
    ],
    1 => [
        0 => John,
        1 => Wayne,
        2 => dead,
        3 => men
    ]
];

谢谢你的帮助。

这应该可以。不过我还没有测试过。

$inputs = array( $arr1, $arr2, $arr3, $arr4 );
$output = array();
foreach( $inputs as $arr ){
  $output[] = array();
  foreach( $arr as $k=>$v ){
    $output[$k][] = $v;
  }
}

这应该非常灵活。处理任意数量的输入数组并创建输出数组的#=每个输入数组的长度。

您可以使用array_map:

array_map(null, $array1, $array2, $array3, $array4)

array_map:的PHP文档中提到了这种行为

这个函数的一个有趣的用途是构造一个数组数组,可以通过使用NULL作为回调函数的名称来轻松执行

$array1 = [
    0 => "Bill",
    1 => "John"
];
$array2 = [
    0 => "Gates",
    1 => "Wayne"
];
$array3 = [
    0 => "alive",
    1 => "dead"
];
$array4 = [
    0 => "man",
    1 => "man"
];

$array5 = array();
for($i = 0; $i < count($array1); $i++) {
    $array5[$i] = array($array1[$i], $array2[$i], $array3[$i], $array4[$i]);
}
var_dump($array5);

结果:

array (size=2)
  0 => 
    array (size=4)
      0 => string 'Bill' (length=4)
      1 => string 'Gates' (length=5)
      2 => string 'alive' (length=5)
      3 => string 'man' (length=3)
  1 => 
    array (size=4)
      0 => string 'John' (length=4)
      1 => string 'Wayne' (length=5)
      2 => string 'dead' (length=4)
      3 => string 'man' (length=3)