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];
}

または、2つの配列の長さが等しくない場合は、最大値に達するまでループして、見つかったアイテムのみを追加できます。

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 に答える