1

私は8つの値を持つ単純な配列を持っています。多次元配列にしたいと思います。現在、次のようになっています。

array(8) {
  [0]=>
  int(0)
  [1]=>
  float(100)
  [2]=>
  int(0)
  [3]=>
  int(0)
  [4]=>
  float(0.5)
  [5]=>
  float(53.6)
  [6]=>
  float(32.8)
  [7]=>
  float(9.4)
}

上記の値を使用して、配列を次のようにフォーマットします。

array[0][0] = 0
array[0][1] = 100

array[1][0] = 0
array[1][1] = 0

array[2][0] = .5
array[2][1] = 53.6

したがって、目標は、ループして2つおきの値を配列内の配列に設定するループを作成することです。何か案は?

4

4 に答える 4

7

array_chunkを使用して、配列を2要素ごとに分割します。

このコードは、あなたが探しているものを正確に提供するはずです。

$newArray=array_chunk($oldArray,2,false);
于 2012-07-06T16:11:13.433 に答える
6

これは、説明した形式になります。

$newArray = array();
for ($i=0;$i<count($originalArray);$i+=2) {
   $newArray[] = array($originalArray[$i], $originalArray[$i+1]);
}
于 2012-07-06T16:06:49.743 に答える
2
$output = array();
for ($i = 0, $j = 0, $n = count($array); $i < $n; $i++) {
  $output[$j][] = $array[$i];
  if ($i % 2 == 1) {
    $j++;
  }
}

または...

$output = array();
while ($array) {
  $output[] = array(array_shift($array), array_shift($array));
}

...そしてそのテーマのバリエーションはいくつでもあります。

于 2012-07-06T16:07:48.567 に答える
1

配列変換:

$a = array(0, 100, 0, 0, 0.5, 53.6, 32.8, 9.4);
$b = array();
$j=0;
foreach ($a as $i => $value) {
    if ($i%2) {
        $b[$j][1] = $value;
        $j++;
    } else {
        $b[$j][0] = $value;
    }
}
echo '<pre>';
var_export($a);
var_export($b);
echo '</pre>';
于 2012-07-06T16:16:19.730 に答える