【问题标题】:Merging Arrays in order按顺序合并数组
【发布时间】:2019-05-08 09:40:17
【问题描述】:

我想知道从其他两个数组创建单个数组的最佳方法是根据每个相对数组中的位置合并它们。

I.E

代码:

    $data1 = array("cat", "goat");
    $data2 = array("dog", "cow");

我知道如果你使用 array_merge 你会得到:

Output:
    Array
    (
    [0] => cat
    [1] => goat
    [2] => dog
    [3] => cow
    )

但我需要:

Output:
    Array
    (
    [0] => cat
    [1] => dog
    [2] => goat
    [3] => cow
    )

任何建议都会很棒:)

提前致谢

【问题讨论】:

  • 所以您正在寻找更多的拉链(想想文字拉链)功能?如果其中一个数组更长,会有什么行为?
  • 嗨@Brandon - 是的,这是正确的。如果一个更长,剩下的只是放在将要创建的新数组的底部。

标签: php arrays merge


【解决方案1】:

试试这个

$newArray = array();
for($i=0;$i<count($data1);$i++){
  $newArray[] = $data1[$i];
  if(isset($data2[$i])
    $newArray[] = $data2[$i];
}

if(count($data2)>count($data1){
  for($i=count($data1);$i<count($data2);$i++){
     $newArray[] = $data2[$i];
  }
}

希望对您有所帮助

【讨论】:

  • 嗨。谢谢你。很少有需要从上面的代码中修复但可以正常工作的小代码。非常感谢您的帮助
【解决方案2】:

也许是这样的:

$array1 = [1,2,3,4];
$array2 = [5,6,7,8,9,10,11,12];

$array3 = [];

$length = count($array1) > count($array2) ? count($array1) : count($array2);
for($i = 0; $i < $length; $i++)
{
    if(!empty($array1[$i])) {
        array_push($array3, $array1[$i]);
    }
    if(!empty($array2[$i])) {
        array_push($array3, $array2[$i]);
    }
}

print_r($array3);

【讨论】:

    【解决方案3】:

    您还可以尝试以下方法:

    $a=call_user_func_array('array_merge',array_map(null,$data1,$data2));
    

    使用array_map()null 作为函数参数,您可以将向量转置为二维数组。然后这个数组的元素将在array_merge() 调用中合并。这个外部函数使用call_user_func_array() 调用,它将作为参数传递的数组的每个元素作为指定函数的参数(在本例中为:“array_merge”)。

    您可以在这里找到一个工作示例:https://rextester.com/HKNBM64781

    【讨论】:

      猜你喜欢
      • 2021-02-27
      • 1970-01-01
      • 2020-01-03
      • 2018-11-13
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多