我有一个如下所示的数组
$crops = array(
0 => array(
'crop_name' => 'Maize',
'crop_variety_name' => 'Longe 10H',
'weeks' => array(
9 => 11.200,
10 => 14.700,
11 => 12.300,
12 => 4.300,
14 => 8.500,
16 => 18.800,
17 => 10.600,
20 => 10.000,
30 => 7.000
)
),
1 => array(
'crop_name' => 'Maize',
'crop_variety_name' => 'Longe 5',
'weeks' => array(
15 => 15.400,
16 => 4.700,
19 => 11.000,
20 => 3.000,
21 => 5.000,
29 => 2.000
)
),
2 => array(
'crop_name' => 'Maize',
'crop_variety_name' => 'VP Max',
'weeks' => array(
9 => 6.800,
10 => 8.000,
14 => 3.000,
15 => 6.800,
17 => 4.300,
18 => 7.400,
20 => 5.900,
21 => 2.400,
22 => 2.800,
23 => 5.400,
24 => 3.900
)
),
3 => array(
'crop_name' => 'Rice',
'crop_variety_name' => 'Superica 2',
'weeks' => array(
18 => 6.600,
19 => 11.500,
20 => 8.300,
21 => 10.100,
24 => 2.800
)
),
4 => array(
'crop_name' => 'Soya',
'crop_variety_name' => 'Soya N1',
'weeks' => array(
20 => 3.000
)
),
5 => array(
'crop_name' => 'Soya',
'crop_variety_name' => 'Soya N3',
'weeks' => array(
10 => 5.9,
11 => 12.800,
12 => 5.100,
15 => 4.000,
19 => 4.000,
31 => 3.100
)
)
);
不同的作物crop_name
有一个或多个品种crop_variety_name
。我想检索作物--例如,“作物名称”=“玉米”,而不管它们的作物品种是什么,然后检索周数组,并为作物品种的每一个作物添加每一个星期数组中的所有值,这样我就有了这样一个数组
array(
'Maize' => 195.2,
'Rice' => 39.3
'Soya' => 37.9)
其中键是crop_name
,值是每个作物的crop_varieties的weeks数组中值的总和。第一个数组可以包含任意数量的作物,crop_varieties和weeks数组可以包含任意数量的值。我该怎么做呢。作为作物名称,我试过这个
$crop_names = array();
for($i = 0; $i < count($crops); $i++ ){
array_push($crop_names, $crops[$i]['crop_name']);
}
$crop_name = array_values(array_unique($crop_names));
这适用于crop_names,但array_unique
会导致数据丢失。
发布于 2015-05-04 10:19:41
您的代码不符合您的要求。
我想检索作物--例如,“作物名称”=“玉米”,而不管它们的作物品种是什么,然后检索周数组,并为作物品种的每一个作物添加每一个星期数组中的所有值,这样我就有了这样一个数组 ‘玉米’=> 195.2,‘水稻’=> 39.3‘大豆’=> 37.9)
以下是将上述要求转换为代码的方式:
$amounts = array();
foreach ($crops as $crop) {
$name = $crop['crop_name'];
if (! isset($amounts[$name])) {
// This is the first time when this crop type is processed
$amounts[$name] = 0;
}
// Add all the values in the week array regardless of varieties
$amounts[$name] += array_sum($crop['weeks']);
}
// If you need the names in a separate list you can get it with array_keys()
$crop_names = array_keys($amounts);
看看PHP手册中的阵列函数部分,了解更多的想法。
https://stackoverflow.com/questions/30027153
复制相似问题