【问题标题】:Php - Count multidimensional complex array valuesPhp - 计算多维复数数组值
【发布时间】:2021-12-10 03:00:05
【问题描述】:

必须计算 number 个问题 (questions_row_id)

  • 明智的评估者和明智的设置

来自以下数组:

array:3 [▼
  0 => array:1 [▼
    0 => array:3 [▼
      "questions_row_id" => 1
      "settings_row_id" => 1
      "evaluator_row_id" => array:3 [▼
        0 => "1"
        1 => "4"
        2 => "101"
      ]
    ]
  ]
  1 => array:1 [▼
    0 => array:3 [▼
      "questions_row_id" => 2
      "settings_row_id" => 1
      "evaluator_row_id" => array:2 [▼
        0 => "1"
        1 => "100"
      ]
    ]
  ]
  2 => array:1 [▼
    0 => array:3 [▼
      "questions_row_id" => 4
      "settings_row_id" => 3
      "evaluator_row_id" => array:2 [▼
        0 => "1"
        1 => "101"
      ]
    ]
  ]
]

我在寻找什么:

对于(评估者 id == 1 和设置 id == 1)问题数 = 2
又一次
for (Evaluator id == 1 and settings id == 3) 问题数 = 1

需要一些关于如何解决这个问题的提示,如果可能的话,任何工作样本也很感激。

【问题讨论】:

    标签: php arrays multidimensional-array count iteration


    【解决方案1】:

    可能是这样的

      $evaluators = [];
    
      // start digging
      foreach ($myarray as $i1 => $set1) {
    
        // continue digging
        foreach ($set1 as $i2 => $set2) {
    
          // each evaluator (1, 4 and 101)
          foreach ($set2['evaluator_row_id'] as $evaluator_id) {
    
            // build new array with questions and settings elements
            $settings_id = $set2['settings_row_id'];
            $evaluators[$evaluator_id][$settings_id][] = $set2['questions_row_id'];
          }
        }
      }
    

    然后按每个设置 ID 统计每个评估者的问题...

      $question_counts = [];
      foreach ($evaluators as $evaluator_id => $settings_list) {
        foreach ($settings_list as $setting_id => $question_ids) {
          $question_counts[$evaluator_id][$setting_id] = count($question_ids);
        }
      }
    
      print_r($question_counts);
    

    输出

    Array(
      [1] => Array(
        [1] => 2
        [3] => 1
      )
    
      [4] => Array(
        [1] => 1
      )
    
      [101] => Array(
        [1] => 1
        [3] => 1
      )
    
      [100] => Array(
        [1] => 1
      )
    )
    

    【讨论】:

    • 是的,它现在看起来更平易近人了,但我还是有点卡住了
    • 好的,你能解释一下你想精确计算什么吗?我将编辑答案以计算问题。
    • 感谢您的帮助。我已经看到了编辑后的答案。它计算每个评估者的问题数量。我需要明智的问题数量(评估器和设置)。我在寻找什么:对于(评估者 id == 1 和设置 id == 1)问题数 = 2,对于(评估者 id == 1 和设置 id == 3)问题数 = 1
    • 我想我现在明白了,答案更新了。
    猜你喜欢
    • 2016-10-13
    • 2022-01-12
    • 1970-01-01
    • 2014-10-03
    • 2012-06-26
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多