【问题标题】:How to get an array with specific index outside the foreach using Php如何使用 Php 在 foreach 之外获取具有特定索引的数组
【发布时间】:2018-04-20 20:26:40
【问题描述】:

我的问题是在 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);

【问题讨论】:

  • 确定这部分employeeId = array();缺少$
  • 很难破译!,您可以编辑问题并尝试使其更易于理解吗?
  • 很抱歉我在复制时错过了 $。感谢您的回复。我的问题是在 foreach 之外获取 $employeeId[] 数组
  • 如果你没有得到 $employeeId,请在分配后放置 print_r($employeeId) 进行检查,并在传递给其他函数后检查 LoadArray($employeeId) 的第一行是否正在获取价值跨度>
  • @Rasa $employeeId 的值有 1 个关联数组与这些值 array ( 0 => '13', 1 => '18', 2 => '13', )

标签: php arrays foreach console display


【解决方案1】:

我对您的问题的理解是,您希望将 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

【讨论】:

  • 谢谢兄弟,现在可以正常使用了。这让我头痛了好几个小时。感谢回复的人以及我刚刚知道的这个新的 php 函数“array_map”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 1970-01-01
  • 2023-02-08
  • 2018-02-18
相关资源
最近更新 更多