0

我有一个像这样的数组:

array(2) {
  [0]=>
  array(4) {
    [0]=>
    string(6) "04ba2c"
    [1]=>
    string(6) "f4a204"
    [2]=>
    string(6) "d40604"
    [3]=>
    string(6) "990000"
  }
  [1]=>
  array(4) {
    [0]=>
    string(6) "666666"
    [1]=>
    string(6) "666666"
    [2]=>
    string(6) "666666"
    [3]=>
    string(6) "666666"
  }
}

我想构建数组,使其看起来像这样,但我不知道该怎么做?

array(1) {
  [0]=>
  array(8) {
    [0]=>
    string(6) "04ba2c"
    [1]=>
    string(6) "666666"
    [2]=>
    string(6) "f4a204"
    [3]=>
    string(6) "666666"
    [4]=>
    string(6) "d40604"
    [5]=>
    string(6) "666666"
    [6]=>
    string(6) "990000"
    [7]=>
    string(6) "666666"
  }

有什么想法可以在 PHP 中轻松做到这一点吗?

4

4 回答 4

2
for ($i = 0, $len = count($array[0]); $i < $len; ++$i) {
    $result[] = $array[0][$i];
    $result[] = $array[1][$i];
}

或者,如果两个数组的长度不相等,则可以循环直到达到最大值并仅添加找到的项目:

for ($i = 0, $len = max(count($array[0]), count($array[1])); $i < $len; ++$i) {
    if (isset($array[0][$i])) $result[] = $array[0][$i];
    if (isset($array[1][$i])) $result[] = $array[1][$i];
}
于 2012-10-04T21:28:56.887 回答
2

假设$arr[0]$arr[1]等长:

$arr2 = array(); 

foreach($arr[0] as $key=>$val) {
    $arr2[] = $arr[0][$key];
    $arr2[] = $arr[1][$key];
}
于 2012-10-04T21:28:59.487 回答
0
$newarray = array();
$len = max(count($array[0]), count($array[1]));
for ($x = 0; $x < $len; $x++) {
   if (isset($array[0][$x])) {
      $newarray[] = $array[0][$x];
   }
   if (isset($array[1][$x])) {
      $newarray[] = $array[1][$x];
   }
}
于 2012-10-04T21:30:39.587 回答
0
$arr = array (
    array("04ba2c","f4a204","d40604","990000"),
    array("666666","666666","666666","666666"),
);
$newArr = array();
array_map(function($a,$b) use(&$newArr) {
    $newArr[0][]=$a;$newArr[0][]=$b;
}, $arr[0], $arr[1]);
print_r($newArr);
/*
Array
(
    [0] => Array
        (
            [0] => 04ba2c
            [1] => 666666
            [2] => f4a204
            [3] => 666666
            [4] => d40604
            [5] => 666666
            [6] => 990000
            [7] => 666666
        )

)
*/
于 2012-10-04T22:10:06.917 回答