php - 一个元素在多维数组中出现多少次

标签 php

我需要知道一个“阶段”出现了多少次,以及它是否完成。

最终目标是展示:

Phase 1: 50% completed
Phase 2: 0% completed

任务:

Array
(
    [0] => Array
        (
            [phase] => 1
            [tasks_status] => completed
        )

    [1] => Array
        (
            [phase] => 1
            [tasks_status] => pending
        )
    [2] => Array
        (
            [phase] => 2
            [tasks_status] => pending
        )
)

阶段:

Array
(
    [0] => Array
        (
            [title] => Briefing e Planejamento
            [id] => 1
            [created] => 1437436800
        )

    [1] => Array
        (
            [title] => Rabiscos e Design
            [id] => 2
            [created] => 1438128000
        )

)

编辑

所以,在你们回答的帮助下,我成功了!结果如下:

            /** Define wich tasks has been completed **/
            foreach ($tasks as $task) {
                if ($task['status'] == "completed") {
                    foreach ($fases as &$fase) {
                        if ($fase['id'] == $task['fase_id']) {
                            $fase['numero_total_fases']++;
                            $fase['completed']++;
                        }
                    }
                } elseif ($task['status'] == "pending") {
                    foreach ($fases as &$fase) {
                        if ($fase['id'] == $task['fase_id']) {
                            $fase['numero_total_fases']++;
                            $fase['pending']++;
                        }
                    }
                } elseif ($task['status'] == "behind schedule") {
                    foreach ($fases as &$fase) {
                        if ($fase['id'] == $task['fase_id']) {
                            $fase['numero_total_fases']++;
                            $fase['behind schedule']++;
                        }
                    }
                }
                unset($fase);
            }

            /** Define progress percentage **/
            foreach ($fases as &$fase) {
                $fase['progresso'] = round(($fase['completed'] / ($fase['numero_total_fases'])) * 100);
            }

            /** Print phases progress **/
            $f = 1;
            foreach ($fases as $fase) {
                echo 'Fase '.$f.' - '.$fase['title'].' = '.$fase['progresso'].'% completed';
            }

最佳答案

绘制有点慢,但既然我已经写了,这也是我的答案。看到大多数编程任务可以通过多种方式完成总是很有帮助的:

<?php 
  $tasks = array(
    array(
      'phase' => 1,
      'tasks_status' => 'completed'
    ),
    array(
      'phase' => 1,
      'tasks_status' => 'pending'
    ),
    array(
      'phase' => 2,
      'tasks_status' => 'pending'
    )
  );
  //$phases = array();
  $phases = array(
    1=>array(
      'title'=>'Briefing e Planejamento',
      'id'=>1,
      'created'=>1437436800
    ),
    2=>array(
      'title'=>'Rabiscos e Design',
      'id'=>2,
      'created'=>1438128000
    )
  );

  foreach($tasks as $key=>$task){
    if(isset($phases[$task['phase']])){
      $thisPhase = $phases[$task['phase']];
    }
    else{
      $thisPhase = array(
        'completed' => 0,
        'pending' => 0
      );
    }
    $thisPhase[$task['tasks_status']]++;
    $phases[$task['phase']] = $thisPhase;
  }

  foreach($phases as $name=>$phase){
    echo $phase['title'].": ".round(($phase['completed'] / ($phase['completed'] + $phase['pending'])) * 100)."% completed <br>";
  }
?>

我知道你已经完成了,但是关于阶段数组 - 如果你希望它能成为答案,你应该把它放在原来的问题中。不过,我的建议是使用阶段的 ID 作为阶段数组中的索引名称。我发布的解决方案也适用于此 - 然后您可以在最终的 foreach 循环中使用 $phase 来显示标题或创建时间。

关于php - 一个元素在多维数组中出现多少次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31551032/

相关文章:

php - Azure 通知中心 PHP

javascript - 如果文件下载错误,则在提交表单上管理JSON服务器响应

php - 上周日期数组(从最近的星期一开始)

php - 正则表达式/PHP 删除第一个字母之前的所有内容

php - 如何验证我的 PHP 应用程序的用户?

php - 在 PHP 中添加时间

PHP 将 15 分钟添加到时间值

php - 获取远程文件的大小

php - : mysql: command not found PHP exec() macOS

javascript - Ajax 调用困惑