我有三个数组:
$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]
是否存在。你能确定它吗?