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

Creating new array from existing arrays in php

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

<?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,依此类推。

非常感谢任何指点。

您可以尝试使用 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

如何实现的示例:

    $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)