2015-02-07 2 views
2

현재 배열을 관리하고 작업하는 방법을 배우고 있습니다. 하지만 두 개의 배열을 결합하면 약간 손실됩니다. 두 배열은 모두 동일한 수의 값을가집니다. array_merge($thumbnails, $urls);은 말한대로 처리하지만 내가 찾고있는 것은 아닙니다. 아래 그림과 같이 배열을 병합하려면 어떻게해야합니까?특정 출력 형식으로 배열 병합

$thumbnails = array( 
      array("thumbnail" => "https://example1.png") , 
      array("thumbnail" => "https://example2.png") , 
      array("thumbnail" => "https://example3.png") ,    
); 

    $urls = array( 
      array("url" => "http://www.example.com/1") , 
      array("url" => "http://www.example.com/2") , 
      array("url" => "http://www.example.com/3") ,   
); 

현재 결과

[0]=> 
    array(1) { 
    ["thumbnail"]=> "https://example1.png" 
    } 
    [1]=> 
    array(1) { 
    ["thumbnail"]=> "https://example2.png" 
    } 
    [2]=> 
    array(1) { 
    ["thumbnail"]=> "https://example3.png" 
    } 
    [3]=> 
    array(1) { 
    ["url"]=> "http://www.example.com/1" 
    } 
    [4]=> 
    array(1) { 
    ["url"]=> "http://www.example.com/2" 
    } 
    [5]=> 
    array(1) { 
    ["url"]=> "http://www.example.com/3" 
    } 

원하는 결과

[0]=> 
    array(2) { 
    ["thumbnail"]=> "https://example1.png" 
    ["url"]=> "http://www.example.com/1" 
    } 
    [1]=> 
    array(2) { 
    ["thumbnail"]=> "https://example2.png" 
    ["url"]=> "http://www.example.com/2" 
    } 
    [2]=> 
    array(2) { 
    ["thumbnail"]=> "https://example2.png" 
    ["url"]=> "http://www.example.com/2" 
    } 
    [3]=> 
    array(2) { 
    ["thumbnail"]=> "https://example3.png" 
    ["url"]=> "http://www.example.com/3" 
    } 

답변

1

내가 그들에 단지 루프 것이다 :

foreach ($thumbnails as $k => $src) { 
    if (isset($urls[$k]) { 
     $urls[$k]['thumbnail'] = $src; 
    } 
} 
+0

간단하면서도 효과적입니다. – MaryCoding

0

함수 array_merge 여기 당신을 도움이되지 않습니다, "배열의 배열"이기 때문에 . 하지만 루프를 반복 할 수 있으므로 배열 항목이 하나만 있습니다.

function array_merge_keys($a, $b) { 
    $retArr = array(); 
    // Lets use min(countA, countB) so there will be no errors on 
    // unbalanced array item counts. 
    for($i = 0; $i < min(count($a), count($b)); $i++) { 
     $retArr[$i] = array_merge($a[$i], $b[$i]); 
    } // for end 
    return $retArr; 
} 

$a = array(array("url" => "1.jpg"), array("url" => "2.jpg")); 
$b = array(array("thumb" => "1.thumb.jpg"), array("thumb" => "2.thumb.jpg")); 

print_r(array_merge_keys($a, $b)); 

이 당신에게 제공합니다 :

Array 
(
    [0] => Array 
     (
      [url] => 1.jpg 
      [thumb] => 1.thumb.jpg 
     ) 

    [1] => Array 
     (
      [url] => 2.jpg 
      [thumb] => 2.thumb.jpg 
     ) 

) 
0
$thumbnails = array(
      array("thumbnail" => "https://example1.png") , 
      array("thumbnail" => "https://example2.png") , 
      array("thumbnail" => "https://example3.png") , 
); 

    $urls = array(
      array("url" => "http://www.example.com/1") , 
      array("url" => "http://www.example.com/2") , 
      array("url" => "http://www.example.com/3") , 
); 
$thumbnails = array_combine(array_map(function($key){return 'key'.$key;},array_keys($thumbnails)),$thumbnails); 
$urls = array_combine(array_map(function($key){return 'key'.$key;},array_keys($urls)),$urls); 
var_dump(array_values(array_merge_recursive($thumbnails,$urls))); 

는이 뜻 다음 함수는 당신이 원하는대로 배열을 반환?