将一个数组中的元素推入另一个数组的行中(每行一个元素)

19

我需要将一个数组的元素推送到另一个数组的相应行中。

这两个数组是从$_POST$_FILES创建的,我需要根据它们的索引相互关联。

$array1 = [
    [123, "Title #1", "Name #1"],
    [124, "Title #2", "Name #2"],
];

$array2 = [
    'name' => ['Image001.jpg', 'Image002.jpg']
];

新数组

array (
  0 => 
  array (
    0 => 123,
    1 => 'Title #1',
    2 => 'Name #1',
    3 => 'Image001.jpg',
  ),
  1 => 
  array (
    0 => 124,
    1 => 'Title #2',
    2 => 'Name #2',
    3 => 'Image002.jpg',
  ),
)

我目前使用的代码可以工作,但只适用于数组中的最后一个项目。
我猜测通过循环array_merge函数会在每次循环时清空我的新数组。

$i = 0;
$NewArray = array();
foreach ($OriginalArray as $value) {
    $NewArray = array_merge($value, array($_FILES['Upload']['name'][$i]));
    $i++;
}

如何纠正这个错误?

4个回答

28

这种模糊的答案提示是可以被证明是不正确的,或者需要明确地进行演示。证明:https://3v4l.org/5Hgf8 投票者请注意,不要投票支持那些无法正常工作的答案,以免破坏Stack Overflow的质量。 - mickmackusa

15
$i=0;
$NewArray = array();
foreach($OriginalArray as $value) {
    $NewArray[] = array_merge($value,array($_FILES['Upload']['name'][$i]));
    $i++;
}

[]将把它附加到数组而不是覆盖它。


$OriginalArray 已经有索引键。在 foreach 中使用它们,而不是手动递增自己的计数器变量。 - mickmackusa

3

仅使用循环和数组表示法:

$newArray = array();
$i=0;
foreach($arary1 as $value){
  $newArray[$i] = $value;
  $newArray[$i][] = $array2["name"][$i];
  $i++;
}

0

在迭代时通过引用修改行。因为第二个数组中的行数和名称值与第一个数组相等。使用第一个数组中的索引来定位第二个数组中的适当元素。只需将第二个数组中的元素推入第一个数组即可。

代码:(演示)

foreach ($array1 as $i => &$row) {
    $row[] = $array2['name'][$i];
}
var_export($array1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接