2012-04-26 5 views
0

배열을 사용해야합니다. 여기에 첫 번째 :두 배열을 병합

array(3) 
{ 
    [0]=> string(10) "image1.jpg" 
    [1]=> string(10) "image2.jpg" 
    [2]=> string(10) "image3.jpg" 
} 

그리고 두 번째 :

array(3) 
{ 
[0]=> object(stdClass)#22 (4) 
    { 
    ["id"]=> string(1) "1" 
    ["name"]=> string(6) "Name 1" 
    ["file"]=> string(15) "f1335421531.zip" 
    ["desc"]=> string(6) " " 
    } 
[1]=> object(stdClass)#23 (4) 
    { 
    ["id"]=> string(1) "2" 
    ["name"]=> string(6) "Name 2" 
    ["file"]=> string(15) "f1335421552.zip" 
    ["desc"]=> string(6) " " 
    } 
[2]=> object(stdClass)#24 (4) 
    { 
    ["id"]=> string(1) "3" 
    ["name"]=> string(6) "Name 3" 
    ["file"]=> string(15) "f1335421588.zip" 
    ["desc"]=> string(6) " " 
    } 
} 

나는 다음과 같은 항목 하나에 이러한 배열을 병합 할 수 있습니다 방법 :

[0]=> object(stdClass)#22 (4) 
    { 
    ["id"]=> string(1) "1" 
    ["name"]=> string(6) "Name 1" 
    ["file"]=> string(15) "f1335421531.zip" 
    ["desc"]=> string(6) " " 
    ["img"]=> string(10) "image1.jpg" 
    } 

인가가 어떤 함수를 사용하거나 루프를 작성해야 할 필요가 있습니까?

답변

0
Try this: 
$arr=array("image1.jpg","image2.jpg","image3.jpg"); 
$obj= array((object)array("id"=>"1","name"=>"name1","file"=>"asdb1.zip","desc"=>" "), 
      (object)array("id"=>"2","name"=>"name2","file"=>"asdb2.zip","desc"=>" "), 
      (object)array("id"=>"3","name"=>"name3","file"=>"asdb3.zip","desc"=>" ") 
); 
for($i=0;$i<count($obj);$i++){ 
    $newObj=(array)$obj[$i]; 
    $newObj['img']=$arr[$i]; 
    $newArr[]=(object)$newObj; 
} 
echo "<pre>";var_dump($newArr);echo "</pre>";  
+0

감사합니다. 솔루션이 올바르게 작동하고 내 요구 사항에 정확하게 부합합니다. – user1292810

+0

언제나 환영합니다 :) –

0

먼저 배열, 그것은 이미지

초 배열 객체는 $ 전화 $ 전화

당신은 개체 형식의 다음 반복하는 것입니다 배열 타입으로 두 번째 배열의 각 요소를 변환 할 필요가
for($i=0; $i<count($objects); $i++){ 
    $object['img'] = $images[i]; 
} 

var_dump($objects); //Check the result 
0

array_merge 함수를 사용하면 원하는 것을 얻을 수 있습니다.

+0

출력 예제에서는 결과가 명확하게 ne와 함께 'stdClass'이어야한다고 명시합니다 w는'array'가 아니라'img' 속성이다. – Dyin

+0

반복하면서 캐스팅 할 수 있습니다 –

+0

우리는 할 수 있지만 두 번 변환해서는 안됩니다. 배열이 충분히 클 때 프로세스 시간 (및 메모리)에 추가하는 것은 오버 헤드의 문제입니다. – Dyin

0

나는이에 대한 특정 PHP 함수가 있다고 생각, 그래서 시도하지 않는 다음

foreach ($array2 as $i => &$item) { 
    $item->img = $array2[$i]; 
} 
0

시도

$std1 = new stdClass(); 
$std1->id = "1"; 
$std1->name = "Name 1"; 
$std1->file = "f1335421531.zip"; 
$std1->desc = ""; 

$std2 = new stdClass(); 
$std2->id = "2"; 
$std2->name = "Name 2"; 
$std2->file = "f1335421552.zip"; 
$std2->desc = ""; 

$std3 = new stdClass(); 
$std3->id = "3"; 
$std3->name = "Name 3"; 
$std3->file = "f1335421588.zip"; 
$std3->desc = ""; 

$obj = array (
     $std1, 
     $std2, 
     $std3 
); 
$image = array (
     "image1.jpg", 
     "image2.jpg", 
     "image3.jpg" 
); 

for($i = 0; $i < count ($obj); $i ++) { 
    $obj [$i]->img = $image [$i]; 
} 

var_dump ($obj); 

출력

array 
    0 => 
    object(stdClass)[1] 
     public 'id' => string '1' (length=1) 
     public 'name' => string 'Name 1' (length=6) 
     public 'file' => string 'f1335421531.zip' (length=15) 
     public 'desc' => string '' (length=0) 
     public 'img' => string 'image1.jpg' (length=10) 
    1 => 
    object(stdClass)[2] 
     public 'id' => string '2' (length=1) 
     public 'name' => string 'Name 2' (length=6) 
     public 'file' => string 'f1335421552.zip' (length=15) 
     public 'desc' => string '' (length=0) 
     public 'img' => string 'image2.jpg' (length=10) 
    2 => 
    object(stdClass)[3] 
     public 'id' => string '3' (length=1) 
     public 'name' => string 'Name 3' (length=6) 
     public 'file' => string 'f1335421588.zip' (length=15) 
     public 'desc' => string '' (length=0) 
     public 'img' => string 'image3.jpg' (length=10)