2012-04-26 26 views
0

配列が必要です。ここでは最初のものである:2つの配列をマージする

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

2つ目:

私は、次の項目で一つにこれらの配列をマージすることができますどのように
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属性 'img'であり、' array'ではありません。 – Dyin

+0

反復中にキャストすることができます –

+0

できますが、2回の変換はしないでください。オーバーヘッドの問題は、配列が十分に大きいときに処理時間(およびメモリ)に追加することです。 – 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) 
関連する問題