从php中的现有数组创建新数组

时间:2015-01-17 21:18:49

标签: php arrays array-merge

我正在尝试创建一个包含预先存在的数组值的新数组。

<?php

$array1 = array(
    0 => 101,
    1 => 102,
    2 => 121,
    3 => 231,
    4 => 232,
    5 => 233
);

$array2 = array(
    0 => 58,
    1 => 98,
    2 => 45,
    3 => 48,
    4 => 45,
    5 => 85
);

$result = array();

请注意,第一个元素来自$array1,第二个元素来自$array2,依此类推。

非常感谢任何指针。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用forforeach循环(如果$array1$array2具有相同数量的具有相同索引的元素):

$result = array();

for($i = 0; $i < count($array1); $i++){
  $result[] = $array1[$i];
  $result[] = $array2[$i];
}

[]为您提供了未指定索引的功能,因此您可以将它们从每个数组逐个推送到结果数组。

Example with for loop

Example with foreach loop

还有一种更直接的方法,而不用担心索引和元素丢失:

$i = 0;

foreach($array1 as $v){
  $result[$i] = $v;
  $i = $i+2;
}

$i = 1;

foreach($array2 as $v){
  $result[$i] = $v;
  $i = $i+2;
}

ksort($result);

Example

它看起来有点麻烦,所以你可以编写一个函数来使它更优雅:

function build_array(&$array, $input, $counter){
   foreach($input as $v){
      $array[$counter] = $v;
      $counter = $counter+2;
   }
}

build_array($result, $array1, 0);
build_array($result, $array2, 1);
ksort($result);

Example

答案 1 :(得分:1)

如何实现这一目标的示例:

    $array = array(4,5,6);
    $array2 = array(8,9,0,12,44,);
    $count1 = count($array);
    $count2 = count($array2);
    $count = ($count1 > $count2) ? $count1 : $count2;
    $rez = array();
    for ($i = 0; $i < $count; $i++) {
        if ($i < $count1) {
           $rez[] = $array[$i];
        } 
        if ($i < $count2) {
           $rez[] = $array2[$i];
        }


    }

var_dump($rez);

结果将是一个数组

array(8) {
  [0]=>
  int(4)
  [1]=>
  int(8)
  [2]=>
  int(5)
  [3]=>
  int(9)
  [4]=>
  int(6)
  [5]=>
  int(0)
  [6]=>
  int(12)
  [7]=>
  int(44)
}

但如果你需要保存空值,你可以删除 这会检查if ($i < $count2)