Php - 计算多维复杂数组值

Php - Count multidimensional complex array values

必须数 个问题 (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"
      ]
    ]
  ]
]

我在找什么:

For (Evaluator id == 1 and settings id == 1) 问题数 = 2
又一次
for (Evaluator id == 1 and settings id == 3) 问题数 = 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
  )
)