如何使用 Php 在 foreach 之外获取具有特定索引的数组

How to get an array with specific index outside the foreach using Php

我的问题是在 foreach 之外的数组中获取数组 employeeIds

$jobCard

$jobCard 在我的实例中包含一个关联 我在数组

中得到 employee_id
$employeeId = array();  

foreach ($jobCards as $jobCard) {
    $employeeId[] = $jobCard['employee_id'];
}

$employees = Employee::LoadArray($employeeId); 

foreach ($employees as $employeeID => $Employee) {
    $employeeName[$employeeID] = $Employee->getName();
    Console::Log('name', $employeeName);
}

foreach ($jobCards as $jobCard) {
    Console::Log('$employeeName', $employeeName);
    $notes[] = $employeeName[$employeeID] . " \n" .$jobCard['description_notes'];
}

$detail['notes'] = implode("\n", $notes);
Console::Log('display', $detail);

我对你的问题的理解是,你希望 ID 的员工姓名与描述注释相结合。如果是这样,那么你的迭代逻辑有点混乱。

更简单的方法是:

  1. 获取所有员工
  2. 迭代$jobCards并在员工数组中查找员工姓名的同时编译注释

例如:

<?php
// get all employees for the collected ids
$employees = Employee::LoadArray(array_column($jobCards, 'employee_id'));

// map job cards to notes
$notes = array_map(function ($jobCard) use($employees) {
    return sprintf(
        "%s\n%s",
        // access the employee name directly
        $employees[$jobCard['employee_id']]->getName(),
        $jobCard['description_notes']
    );
}, $jobCards);

$detail['notes'] = implode("\n", $notes);

函数参考:

array_column, array_map