在php

时间:2015-07-31 18:20:11

标签: php arrays multidimensional-array

我有以下数组

 $a = array(0 => 'Item',
        1 => 'Wattles',
        2 => 'Types',
        3 => 'Compost',
        4=> 'Estimated',
        5 => '123',
        6 => 'Actual',
        7 => '12',
    );

使用以下代码进行排序。

echo "<pre>";
print_r($a);

$a_len = count($a);
$fnl = array();
$i = 0;

while($i<$a_len){
    $fnl[$a[$i]] =  $a[++$i];
    $i++;
}
print_r($fnl);

正确打印

Array
(
    [Item] => Wattles
    [Types] => Compost
    [Estimated Qty] => 123
    [Actual Qty] => 12
)

直到我添加多个条目。

Array
(
    [0] => Item
    [1] => Wattles
    [2] => Types
    [3] => Compost
    [4] => Estimated Qty
    [5] => 123
    [6] => Actual Qty
    [7] => 12
    [8] => Item
    [9] => Silt Fence
    [10] => Types
    [11] => Straw
    [12] => Estimated Qty
    [13] => 45
    [14] => Actual Qty
    [15] => 142
)

我需要在多维数组中添加项目。

$items = array
  (
  array("Wattles","Silt Fence), //items
  array("Compost","Straw"), //types 
  array(123,45), //estimated quantity
  array(12,142) //actual quantity
  );

有一些给定的数字。在列表重复之前,正好有4个条目(8个项目)。

我已经被困在这个部分好几个小时了,不知道如何让我的代码按照我的意愿运行。

2 个答案:

答案 0 :(得分:0)

要使用字符串键获得预期结果,您可以这样做:

foreach(array_chunk($a, 2) as $pairs) {
    $result[$pairs[0]][] = $pairs[1];
}

收率:

Array
(
    [Item] => Array
        (
            [0] => Wattles
            [1] => Silt Fence
        )

    [Types] => Array
        (
            [0] => Compost
            [1] => Straw
        )

    [Estimated] => Array
        (
            [0] => 123
            [1] => 45
        )

    [Actual] => Array
        (
            [0] => 12
            [1] => 142
        )

)

然后,如果你想要用数字索引:

$result = array_values($result);

答案 1 :(得分:0)

您的多维数组结构错误。你应该像这样构建你的数组:

$a = array(
  0 => array(
    'Item' => 'Wattles',
    'Types' => 'Compost',
    'Estimated' => 123,
    'Actual' => 12
  )
);

然后添加到它:

$a[] = array(
  'Item' => 'Silt Fence',
  'Types' => 'Straw',
  'Estimated' => 45,
  'Actual' => 142
);

将其渲染出来以查看我认为您正在寻找的结果。

print_r($a);

如果您想学习如何根据需要按子数组值排序多维数组,我可以发布一个链接。