首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检索数组中具有相同值的元素,并将它们分组以操作组中的数据。

检索数组中具有相同值的元素,并将它们分组以操作组中的数据。
EN

Stack Overflow用户
提问于 2015-05-04 09:49:56
回答 1查看 34关注 0票数 0

我有一个如下所示的数组

代码语言:javascript
运行
复制
 $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。我想检索作物--例如,“作物名称”=“玉米”,而不管它们的作物品种是什么,然后检索周数组,并为作物品种的每一个作物添加每一个星期数组中的所有值,这样我就有了这样一个数组

代码语言:javascript
运行
复制
array(
    'Maize' => 195.2,
    'Rice' => 39.3
    'Soya' => 37.9)

其中键是crop_name,值是每个作物的crop_varieties的weeks数组中值的总和。第一个数组可以包含任意数量的作物,crop_varieties和weeks数组可以包含任意数量的值。我该怎么做呢。作为作物名称,我试过这个

代码语言:javascript
运行
复制
   $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会导致数据丢失。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-04 10:19:41

您的代码不符合您的要求。

我想检索作物--例如,“作物名称”=“玉米”,而不管它们的作物品种是什么,然后检索周数组,并为作物品种的每一个作物添加每一个星期数组中的所有值,这样我就有了这样一个数组 ‘玉米’=> 195.2,‘水稻’=> 39.3‘大豆’=> 37.9)

以下是将上述要求转换为代码的方式:

代码语言:javascript
运行
复制
$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手册中的阵列函数部分,了解更多的想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30027153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档