2011-09-23 12 views
0

다차원 배열의 다차원 배열에서 값을 가져 오려고합니다. 여기에 다차원 배열 ...PHP 다차원 배열의 다차원 배열에서 고유 값 가져 오기

Array 
(
    [0] => Array 
     (
      [CalID] => 121111 
      [Rink] => North 
      [TimeChunks] => Array 
       (
        [int] => Array 
         (
          [0] => 6 
          [1] => 4 
          [2] => 3 
          [3] => 2 
          [4] => 1 
         ) 

       ) 

     ) 

    [1] => Array 
     (
      [CalID] => 121111 
      [Rink] => South 
      [TimeChunks] => Array 
       (
        [int] => Array 
         (
          [0] => 4 
          [1] => 2 
         ) 

       ) 


     ) 
) 

내가 [TimeChunks] 만 유효 시간 청크를 얻으려면이 [INT] 예 : 1,2,3,4,6,8는하지만 난 수없는 것 두 번째 다차원 배열로 드릴 다운합니다. 다음은 내가 주사위를 굴리지 않고 시도한 것입니다 :

$tmp = array(); 

foreach ($a as $row) 
    if (!in_array($row,$tmp)) array_push($tmp,$row); 

print_r ($tmp); 

어떤 제안이 있습니까?

답변

0
$tmp = array(); 

foreach ($a AS $row) { 
    if (isset($row['TimeChunks']['int']) && is_array($row['TimeChunks']['int'])) { 
    $tmp = array_merge($tmp, $row['TimeChunks']['int']); 
    } 
} 
$tmp = array_unique($tmp); 

을 원하는 경우 값에 if 문을 사용할 수 있습니다 너에게 중요하지 않아,이 트릭을해야합니다. 다른 [TimeChunks] [int]의 모든 값을 결합한 다음 나중에 그 값을 제거합니다.

+0

'array_merge()'는 여기에서 자르지 않을 것이고'[ 'int']'는 인덱스가 있기 때문에 나중에 값을 덮어 씁니다 ... – DaveRandom

+0

Thx. 그게 효과가있어. 열쇠는 나에게 쓸모 없어. 내가 놓친 단계는 키스에게 한 것이고 듀프는 제거하는 것 같아요. – user961389

+0

[ 'int']는 예제를 보는 숫자 키를 포함하므로 잘되어야합니다. – buffcoredave

0

당신은 전혀 배열의 'TimeChunks'키의 배열을 통해 반복하지 않는,이 시도 :이 같은

foreach ($a as $row) { 
    foreach ($row['TimeChunks'] as $chunk) { 
    if (!in_array($row,$chunk)) array_push($tmp,$$chunk); 
    } 
} 
0

뭔가?

$tmp = array(); 
foreach ($array as $section) { // Loop outer array 
    if (isset($section['TimeChunks']['int'])) { // make sure ['TimeChunks']['int'] is set for this inner array 
    foreach ($section['TimeChunks']['int'] as $chunk) { // Loop the time chunks 
     $tmp[] = $chunk; // Push the chunks onto the $tmp array 
    } 
    } 
} 
$tmp = array_unique($tmp); // Remove duplicate values 

print_r($tmp); 

당신은 외부 배열을 통해 루프가의 ['TimeChunks']['int'] 키의 내용을 얻고 $tmp 배열에 그 밀어 넣습니다. 각 반복마다 in_array() 검사를 수행 할 수 있지만 $tmp 배열에 모두 추가하고 나중에 array_unique()을 전달하는 것이 더 효율적입니다 (함수 호출이 적음).

0

foreach는 ($ A와 $ 키 => $ 값)를 사용하지 왜

는 당신은 키와 배열의 키는 때로 믿을 경우

관련 문제