Как подсчитать определенные значения массива и присвоить значения в данных таблицы

Вот моя проблема: у меня есть два массива, один из которых представляет собой многомерный массив, а второй - одиночный массив, эти массивы отображаются в двух таблицах. мультимассив отображается в таблице 1, а один — в таблице 2. Я хочу подсчитать количество сотрудников для каждой должности.

<?php include_once('fake_db.php'); ?>


<h3>Department List</h3>
<table class = "table table-condensed table-striped table-bordered table-hover no-margin">
    <thead>
    <tr>
        <td>Name</td><td>Number of Employees</td><td>Action</td>
    </tr>
    </thead>
   <?php foreach($positions as $key => $value){ ?>

        <tr>
            <td><?= $value; ?></td>
            <td></td>
            <td><a href = "profile.php?id=<?= $key; ?>">View Employee List</a></td>
        </tr>
    <?php } ?>
</table>

fake_db.php

$employees = array
             (
                 array("name" => 'Jason Alipala', "employee_id" => 'G1001-05', "position" => 1),
                 array("name" => 'Bryann Revina', "employee_id" => 'G1009-03', "position" => 2),
                 array("name" => 'Jeniel Mangahis', "employee_id" => 'G1009-04', "position" => 2),
                 array("name" => 'Arjay Bussala', "employee_id" => 'G1009-05', "position" => 3),
                 array("name" => 'Ronnel Ines', "employee_id" => 'G1002-06', "position" => 3)
             );

$positions = array(1 => 'TL', 2 => 'Programmer', 3 => 'Converter');

Не совсем понятно, что вы имеете в виду. Вы хотите подсчитать количество сотрудников для каждой должности?

Nick 30.05.2019 05:07

Да, я хочу подсчитать количество сотрудников для каждой должности

user10330977 30.05.2019 05:09
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы подсчитать количество сотрудников для каждой должности, вы можете использовать array_count_values в столбце position массива employees. Например:

$emp_positions = array_count_values(array_column($employees, 'position'));
foreach ($positions as $key => $value) {
    echo $positions[$key] . ' : ' . $emp_positions[$key] . ' employees' . PHP_EOL;
}

Выход:

TL : 1 employees 
Programmer : 2 employees 
Converter : 2 employees

Демо на 3v4l.org

Предупреждение: array_column() ожидает, что параметр 1 будет массивом, ноль указан в C:\xampp\htdocs\gleent\fake_db.php в строке 27 Предупреждение: array_count_values() ожидает, что параметр 1 будет массивом, ноль указан в C:\xampp\ htdocs\gleent\fake_db.php в строке 27

user10330977 30.05.2019 05:13

Как я могу поместить результат также в данные моей таблицы?

user10330977 30.05.2019 05:15

@Diether Я использовал данные из вашего вопроса (см. Демо). Я не уверен, почему вы видите эту ошибку?

Nick 30.05.2019 05:17

@Diether, где вы хотите разместить результаты?

Nick 30.05.2019 05:18

Я исправляю сейчас, но как я могу поместить результат в данные моей таблицы? не в эхе <?php foreach($positions as $key => $value){ ?> <tr> <td><?= $value; ?></td> <td><?= $emp_positions ?></td> <td><a href = "profile.php?id=<?= $key; ?>">Просмотреть список сотрудников</a ></td> </tr> <?php } ?>

user10330977 30.05.2019 05:18

@Diether, просто используй $emp_positions[$key] в этой позиции. Смотрите мою обновленную демонстрацию

Nick 30.05.2019 05:31

Как ? можете ли вы объяснить это в коде. У меня уже есть цикл foreach, если я вставлю еще один foreach только для отображения результатов, это нехорошо

user10330977 30.05.2019 05:35

@Дитер <?php foreach($positions as $key => $value){ ?> <tr> <td><?= $value; ?></td> <td><?= $emp_positions[$key] ?></td> <td><a href = "profile.php?id=<?= $key; ?>">View Employee List</a></td> </tr> <?php } ?>

Nick 30.05.2019 05:36

@ Дитер, не беспокойся. Я рад, что смог помочь. Если это действительно решило вашу проблему, подумайте о том, чтобы отметить ответ как принятый (галочка под стрелками вверх/вниз). См. stackoverflow.com/help/someone-answers

Nick 30.05.2019 05:45

Другие вопросы по теме