Вот моя проблема: у меня есть два массива, один из которых представляет собой многомерный массив, а второй - одиночный массив, эти массивы отображаются в двух таблицах. мультимассив отображается в таблице 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');
Да, я хочу подсчитать количество сотрудников для каждой должности
Чтобы подсчитать количество сотрудников для каждой должности, вы можете использовать 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
Предупреждение: array_column() ожидает, что параметр 1 будет массивом, ноль указан в C:\xampp\htdocs\gleent\fake_db.php в строке 27 Предупреждение: array_count_values() ожидает, что параметр 1 будет массивом, ноль указан в C:\xampp\ htdocs\gleent\fake_db.php в строке 27
Как я могу поместить результат также в данные моей таблицы?
@Diether Я использовал данные из вашего вопроса (см. Демо). Я не уверен, почему вы видите эту ошибку?
@Diether, где вы хотите разместить результаты?
Я исправляю сейчас, но как я могу поместить результат в данные моей таблицы? не в эхе <?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 } ?>
@Diether, просто используй $emp_positions[$key]
в этой позиции. Смотрите мою обновленную демонстрацию
Как ? можете ли вы объяснить это в коде. У меня уже есть цикл foreach, если я вставлю еще один foreach только для отображения результатов, это нехорошо
@Дитер <?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 } ?>
@ Дитер, не беспокойся. Я рад, что смог помочь. Если это действительно решило вашу проблему, подумайте о том, чтобы отметить ответ как принятый (галочка под стрелками вверх/вниз). См. stackoverflow.com/help/someone-answers
Не совсем понятно, что вы имеете в виду. Вы хотите подсчитать количество сотрудников для каждой должности?