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 回答