【问题标题】:Parsing a Two level - array, PHP解析两级数组,PHP
【发布时间】:2017-05-18 00:32:53
【问题描述】:

我有什么

我有如下两级数组:

<?php $myarray = Array ( 
  [0] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [1] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [2] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [3] => Array ( [1] => 0 [2] => 1 [3] => 0 [4] => 0 ) 
  [4] => Array ( [1] => 0 [2] => 1 [3] => 0 [4] => 0 ) 
  [5] => Array ( [1] => 1 [2] => 0 [3] => 0 [4] => 0 ) 
  [6] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [7] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [8] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [9] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [10] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [11] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [12] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [13] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 ) 
  [14] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 [color] => red ) 
  [15] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 [color] => yellow ) 
  [16] => Array ( [1] => 0 [2] => 0 [3] => 1 [4] => 0 [color] => yellow ) 
  [17] => Array ( [1] => 0 [2] => 0 [3] => 1 [4] => 0 [color] => yellow ) 
  [18] => Array ( [1] => 0 [2] => 0 [3] => 1 [4] => 0 [color] => red ) 
  [19] => Array ( [1] => 0 [2] => 0 [3] => 1 [4] => 0 [color] => yellow ) 
  [20] => Array ( [1] => 0 [2] => 0 [3] => 1 [4] => 0 [color] => yellow ) 
  [21] => Array ( [1] => 0 [2] => 1 [3] => 0 [4] => 0 [color] => yellow ) 
  [22] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 [color] => yellow ) 
  [23] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 [color] => yellow ) 
  [24] => Array ( [1] => 0 [2] => 0 [3] => 1 [4] => 0 [color] => yellow ) 
  [25] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 [color] => red ) 
  [26] => Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 [color] => yellow ) 
) ?>

内部数组(索引 0 - 26)包含 4 或 5 个条目,每个条目对应于位置 1、2、3、4 和条目 5,可以是红色、黄色或绿色。位置可以是 0 或 1。

我想做的事:

1) 我想在内部数组的位置 1、位置 2、位置 3 和位置 4 处添加所有值(一列的总数)

2) 如果任何内部数组有多个“位置”为 1,则需要标记整个“行”(条目)并“从 $myarray 取消设置”

如果不清楚,请再问一些,我会尽力澄清。

谢谢

【问题讨论】:

  • 那么问题出在哪里?
  • 解析数组。大声笑
  • 似乎很高兴只是降低任何东西的评分,嗯?

标签: php arrays wordpress


【解决方案1】:

通过结合使用array_sum() 和array_column(),一列的总数非常简单:

$position1Sum = array_sum(array_column($myarray,'1'));
$position2Sum = array_sum(array_column($myarray,'2'));
$position3Sum = array_sum(array_column($myarray,'3'));
$position4Sum = array_sum(array_column($myarray,'4'));

清除具有多个活动位置的任何东西的数组:

/* editing the same array you are looping thru is typically bad - lets make a copy first.*/
$cleanArray = $myarray;
/* loop thru - and unset the rows where more than one position are 1 
(which will make their sum more than 1) */
foreach($myarray as $key => $value){
    if($value[1] + $value[2] + $value[3] +$value[4] > 1){
        unset($cleanArray[$key]);
    }
}

$cleanArray 现在将包含与 $myarray 相同的内容,减去将多个位置设置为 1 的行。当然还有其他几种方法可以解决这个问题 - 我尽量坚持最干净的方式以便稍后阅读如果可能的话... :-)

【讨论】:

  • 做了我需要的伙伴。非常感谢
猜你喜欢
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多