【问题标题】:Filter associative php array过滤关联的php数组
【发布时间】:2015-03-26 14:06:05
【问题描述】:

我需要过滤我的 php 数组并使其独一无二。 这是我的数组:

array (size=50)
  0 => 
    array (size=1)
      'circuit_reference' => string '1' (length=1)
  1 => 
    array (size=2)
      'circuit_reference' => string '1' (length=1)
      'circuit_phase' => string 'L1' (length=2)
  2 => 
    array (size=3)
      'circuit_reference' => string '1' (length=1)
      'circuit_phase' => string 'L1' (length=2)
      'circuit_is_sub_main' => string 'N' (length=1)
  3 => 
    array (size=1)
      'circuit_reference' => string '1' (length=1)
  4 => 
    array (size=2)
      'circuit_reference' => string '1' (length=1)
      'circuit_phase' => string 'L2' (length=2)

我需要在新数组中只有具有最大计数元素的子数组:

array(
  1 => 
    array (size=3)
      'circuit_reference' => string '1' (length=1)
      'circuit_phase' => string 'L1' (length=2)
      'circuit_is_sub_main' => string 'N' (length=1)
  2 => 
   array (size=2)
      'circuit_reference' => string '1' (length=1)
      'circuit_phase' => string 'L2' (length=2)

被答案困住了(

【问题讨论】:

    标签: php arrays filter


    【解决方案1】:

    我自己解决了这个任务,这里是答案:

                foreach ($arrays as $array) {
                    if (isset($array['circuit_reference']) && isset($array['circuit_phase'])) {
                        if ($curr == '' && $curt == '') {
                            $curr = $array['circuit_reference'];
                            $curt = $array['circuit_phase'];
                        }
                        if ($curr != $array['circuit_reference'] || $curt != $array['circuit_phase']) {
                            $curr = $array['circuit_reference'];
                            $curt = $array['circuit_phase'];
                            $resulted_circuits[] = $arrays[$maxin];
                            $countm = 0;
                            $maxin = 0;
                        }
                        if ($countm < count($array)) {
                            $countm = count($array);
                            $maxin = $i;
                        }
                    }
                    $i++;
                }
                if ($maxin != 0 && $maxin <= count($arrays)) {
                    $resulted_circuits[] = $arrays[$maxin];
                }
    

    谢谢大家。

    【讨论】:

      【解决方案2】:

      试试这个

      $arrays = array( 
          array('circuit_reference' => '1'),
          array('circuit_reference' =>  '1', 'circuit_phase' =>  'L1'),
          array('circuit_reference' =>  '1', 'circuit_phase' =>  'L1','circuit_is_sub_main' => 'N'), 
          array('circuit_reference' =>  '1'),
          array('circuit_reference' =>  '1', 'circuit_phase' =>  'L2'),
          array('circuit_reference' =>  '1', 'circuit_phase' =>  'L2','circuit_is_sub_main' => 'N' )
      );
      
      $max = count(max($arrays));
      foreach($arrays as $arr)
      {
          if(count($arr) == $max)
              $arrays1[] = $arr;
      }   
      var_dump($arrays1);
      

      输出

      array(2) {
        [0]=>
        array(3) {
          ["circuit_reference"]=>
          string(1) "1"
          ["circuit_phase"]=>
          string(2) "L1"
          ["circuit_is_sub_main"]=>
          string(1) "N"
        }
        [1]=>
        array(3) {
          ["circuit_reference"]=>
          string(1) "1"
          ["circuit_phase"]=>
          string(2) "L2"
          ["circuit_is_sub_main"]=>
          string(1) "N"
        }
      }
      

      【讨论】:

      • 没有帮助,结果只是 `1 => ` `array (size=3)` ` 'circuit_reference' => string '1' (length=1)` ` 'circuit_phase' => string 'L2' (length=2)` ` 'circuit_is_sub_main' => string 'N' (length=1))` 只有一个子数组,但需要每个子数组的最大值。
      • 谢谢,但元素的最大值是可变值(不是所有最大值 3),我现在将更新我的示例。
      • 你的意思是“我需要在新数组中只有具有最大计数元素的子数组:”?
      • 对于每个“电路参考”和“电路相位”,我需要最大对应的子数组。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 2020-09-19
      相关资源
      最近更新 更多