组合数组以形成多维数组


Combine arrays to form a multidimensional array

我有三个数组:

$arr1 = Array (
    [0] => 1001
    [1] => 1007
    [2] => 1006);
$arr2 = Array (
    [0] => frank
    [1] => youi
    [2] => nashua);
$arr3 = Array (
    [0] => getfrankemail
    [1] => getyouiemail
    [2] => getnashuaemail);

有没有办法组合这些数组来获得这样的多维数组:?

Array (
        [0] => Array (
            [0] => 1001
            [1] => frank
            [2] => getfrankemail)
        [1] => Array (
            [0] => 1007
            [1] => youi
            [2] => getyouiemail)
        [2] => Array (
            [0] => 1006
            [1] => nashua
            [2] => getnashuaemail)
        );

编辑:你真正要找的是Ruby/Python中zip方法的PHP版本。

对于您的特定示例array_map效果很好:

$result = array_map(null, $arr1, $arr2, $arr3);

输出:

array (
  0 =>
  array (
    0 => 1001,
    1 => 'frank',
    2 => 'frankemail',
  ),
  1 =>
  array (
    0 => 1007,
    1 => 'youi',
    2 => 'youiemail',
  ),
  2 =>
  array (
    0 => 1006,
    1 => 'nashua',
    2 => 'nashuaemail',
  ),
)

迭代第一个数组(看起来像是 ids),您可以将每个值的键与 $arr2 中的索引和 $arr3

$result = array();
foreach ($arr1 as $key => $value) {
    $result[] = array($value, $arr2[$key], $arr3[$key]);
}

正如@kingkero在他的回答中提到的,如果它们不存在,您将收到错误,您可以检查并忽略任何在这种情况下的行。

$result = array();
foreach ($arr1 as $key => $value) {
    if (!isset($arr2[$key]) || !isset($arr3[$key])) {
        continue;
    }
    $result[] = array($value, $arr2[$key], $arr3[$key]);
}

您可以使用array_push($aContainer, $arr1);$aContainer[] = $arr[1]

您可以使用一个循环来执行此操作,在该循环中,您可以使用相同的键访问三个数组中的每一个。

$result = array();
$max = count($arr1);
for ($i=0; $i<$max; $i++) {
    $result[] = array(
        $arr1[$i],
        $arr2[$i],
        $arr3[$i],
    );
}

这可能会触发越界异常,因为它不会检查$arrX[$i]是否存在。你能确定它吗?