2012-01-12 1 views
0

다른 키와 값이 포함 된 두 개의 배열이 있습니다. 그러나 일부 키는 하나의 배열 (즉 array_merge)에 함께 섞고 싶은 문자열 (정수)을 저장합니다. 달성해야하는 것은 이러한 정수를 수집하는 것입니다.다른 배열에 속한 다른 키의 값 가져 오기 및 다른 배열에 병합

이 처음

array 
    0 => 
     array 
      'featured_pic' => string '740' (length=3) 
    1 => 
     array 
      'featured_pic' => string '741' (length=3) 
    2 => 
     array 
      'featured_pic' => string '742' (length=3) 

이며, 이것은 내가 정말 필요로하는 배열 #에서 featured_pic이고 두 번째

array 
    0 => 
    array 
     'accommodation_roomphoto' => string '456' (length=3) 
     'accommodation_roomname' => string 'Single room' (length=11) 
     'accommodation_roomsize' => string 'single' (length=6) 
     'price_unit' => string '60' (length=2) 
     'price_currency' => string 'USD' (length=3) 
    1 => 
    array 
     'accommodation_roomphoto' => string '434' (length=3) 
     'accommodation_roomname' => string 'Double room' (length=11) 
     'accommodation_roomsize' => string 'double' (length=6) 
     'price_unit' => string '80' (length=2) 
     'price_currency' => string 'USD' (length=3) 

입니다 : 배열을 위해서 var_dump 사용

다음과 같이 1과 배열 # 2의 accommodation_roomphoto. 나는 그 모든 숫자를 하나의 배열로 모을 필요가있다. (나는 더 이상 키가 필요 없다. 위의 예제에서 740, 741, 742, 456, 434와 같은 일련의 숫자가 필요하다.) :

array 
    0 => '740' 
    1 => '741' 
    2 => '742' 
    3 => '456' 
    4 => '434' 

결과 배열은

이 질문에 대한 이해 당신

+2

최종 배열의 모양을 보여주는 예제를 제공 할 수 있습니까? –

+0

"accommodation_roomphoto"및 "featured_pic"에 관심이있는 두 개의 키를 확인합니다. 위의 예제에서 numers는 숫자 만 필요합니다. '740', '741', 742 ','456 ' '434 – unfulvio

답변

0

, 이것은 단순한 루핑 작업입니다 두 배열에서 :

$result = array(); 

foreach ($array1 as $item) { 
    foreach ($item as $sub) { 
    if (is_numeric($sub)) $result[] = (int) $sub; 
    } 
} 
foreach ($array2 as $item) { 
    foreach ($item as $sub) { 
    if (is_numeric($sub)) $result[] = (int) $sub; 
    } 
} 

print_r($result); 

...

그러나 이것은 당신이 배열의 두 번째 세트의 price_unit 키는 숫자이기 때문에 당신이 위의 배열에서 원하는 결과를 제공하지 않습니다.

+0

고맙습니다. 제안 된 첫 번째 해결책은 제게 잘되었습니다. – unfulvio

0
$new_array = array(); 

foreach($array1 as $array) { 
    $new_array[] = intval($array['featured_pic']); 
} 

foreach($array2 as $array) { 
    $new_array[] = intval($array['accommodation_roomphoto']); 
} 

감사합니다 (순서는 중요하지 않습니다) 위의 예처럼 뭔가해야합니다.

나는 두 배열에서 foreach를 수행하고 각각에서 필요한 날짜를 추출했습니다.

또한 intval()을 사용하여 문자열을 새 배열의 정수로 변환했습니다.

희망이 도움이됩니다. 또한

$result = array(); 

foreach ($array1 as $item) { 
    if (isset($item['featured_pic'])) $result[] = (int) $item['featured_pic']; 
} 
foreach ($array2 as $item) { 
    if (isset($item['accommodation_roomphoto'])) $result[] = (int) $item['accommodation_roomphoto']; 
} 

print_r($result); 

원하는 키를 모르는 경우, 모든 숫자를 사로 잡고,이 루틴은 문자열로 저장 : 당신은 당신이 관심있는 키를 알고있는 경우

0

array_mergearray_map을 사용하는 단일 라이너.

$result = array_merge(
      array_map(function($el) { return $el['featured_pic']; }, $a), 
      array_map(function($el) { return $el['accomodation_roomphoto']; }, $b) 
     ); 

array_map에 전달 된 익명 함수에 대한 PHP> = 5.3가 필요합니다 : 당신의 두 배열이 $a$b 있다고 가정합니다.