2013-01-11 3 views
2

저는 100 명이 넘는 직원과 각 직원이 약 60 개의 필드를 가진 emp_rec이라는 배열을 가지고 있습니다. 한 번에 한 명의 직원을 사용하는 다음 방법을 사용하고 있습니다 ...PHP에서 배열의 세 객체를 사용하는 방법

foreach($emp_rec as $obj) { 
    $name = $obj->get_empname(); 
    //..... 
    ....../// 
} 

이제 하나의 루프에서 한 번에 3 명의 직원을 사용할 계획하고, 어떻게 이런 짓을 할 수 ...? 이 같은

+0

이 세 가지는 이전 - 현재 - 다음 객체를 의미합니까? –

+0

여기서 3은 첫 번째 두 번째와 세 번째를 의미합니다 ..... –

+0

이것을 확인하십시오 : http://stackoverflow.com/questions/569772/how-do-i-read-two-items-at-a-time-in-a -perl-foreach-loop – rags

답변

0

시도 뭔가 :

for ($i = 0; $i < count($emp_rec); $i+=3) { 
    $emp1 = $emp_rec[$i]; 
    $emp2 = $emp_rec[$i+1]; 
    $emp3 = $emp_rec[$i+2]; 
} 
+0

나는 이것을 시도했지만 작동하지 않는 이유는 배열, 객체의 배열 및 각 객체의 요소가 50 개이기 때문입니다 ... –

+0

객체의 배열은 여전히 ​​배열이고 하나로서 취급 될 수 있습니다. 객체의 배열을 가진 속성을 가진 객체라고 말하고 싶습니까? ArrayAccess 인터페이스를 확인하실 수 있습니다. 귀하의 요구 사항에 맞는 것 같습니다 (http://php.net/manual/en/class.arrayaccess.php) –

+0

진술서에 $ i가 증가하지 않았습니다. – Luceos

1

당신이 시도 할 수 : 여기

$current = Array(); 
while(($current[0] = array_shift($emp_rec)) 
    && ($current[1] = array_shift($emp_rec)) 
    && ($current[2] = array_shift($emp_rec))) { 
    // do stuff here 
} 
if($current[0]) { 
    // there were records left over, optionally do something with them. 
} 
0

당신이 같은 다중 객체에 한 번에서 반복 할 수 있습니다. 적응하기 쉽습니다.

<?php 
// Example of class 
class A { 
    public $a = 'a'; 
    public $b = 'b'; 
    public $c = 'c'; 
} 

$obj1 = new A; // Instantiate 3 objects 
$obj2 = new A; 
$obj3 = new A; 

$objs = array((array)$obj1, (array)$obj2, (array)$obj3); // Array of objects (cast in array) 

foreach ($objs[0] as $key => $value) { 
    echo $objs[0][$key]; 
    echo $objs[1][$key]; 
    echo $objs[2][$key]; 
} 

출력 aaabbbccc

+0

나는이 스크립트를 실행 했으므로 다음과 같은 출력을 제공합니다 : a b b b c c c .... 이것은 찾고 있지 않습니다. 나는 한 번에 b c가 필요합니다 ... –

+0

Ok 죄송합니다, 오해했습니다 –

0

무엇에 대해 :

$GROUP_SIZE = 3; 

$emp_count = count($emp_rec); 
for ($i=0; $i<$emp_count; $i+=$GROUP_SIZE) { 
    for ($j=0; $i+$j<$emp_count && $j<$GROUP_SIZE; $j++) { 
     $current = $emp_rec[$i+$j]; 
     $name = $current->get_empname(); 
    } 
} 

한 번에 3 명 N 직원을 조작해야하는 경우, 현재 직원은에있는 "그룹"알려 것 .