2017-11-08 11 views
0

사용하여 foreach는 외부의 특정 인덱스 배열을 얻기 위해 어떻게 내 문제는는 PHP는

$jobCard

$ 작 w + 내가 얻을 내 인스턴스의 연관을 포함하는 foreach는 외부 배열의 배열 employeeIds를 얻을 수 있었다 배열의 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); 
+1

,'(가)'하드 $' – ArtisticPhoenix

+1

당신이 질문을 수정하고 그것을 시도 좀 더 이해할 수 있도록하기 위해를 줄 수!를 해독 할 수없는? – Zain

+0

끝까지 복사 할 때 미안 해요. 응답 해 주셔서 감사합니다. 내 문제는 foreach 밖에서 $ employeeId [] 배열을 얻는 것이 었습니다. – drakogemini2

답변

0

귀하의 질문에 대한 설명은 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,이 부분`employeeId를 = 배열 ​​() 확실 array_map

+0

고마워 형, 지금은 잘 작동합니다. 그것은 두통의 시간 동안 나를 데려 갔다. 응답 한 사람들과이 새로운 PHP 함수 "array_map"덕분에 방금 알았습니다. – drakogemini2