0

私は配列する必要があります。これが最初です:

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) " " 
   }
 }

これらの配列を次の項目で 1 つにマージするにはどうすればよいですか。

[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"
   }

それを行う機能はありますか、それともループを書く必要がありますか?

4

5 に答える 5

0

最初の配列、それを$imagesと呼びます

秒配列はそれを$objectsと呼びます

for($i=0; $i<count($objects); $i++){
    $object['img'] = $images[i];
}

var_dump($objects); //Check the result
于 2012-04-26T10:08:20.527 に答える
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)
于 2012-04-26T10:15:38.677 に答える
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>";       
于 2012-04-26T10:53:26.110 に答える
0

2 番目の配列の各要素を、現在オブジェクト型である配列型に変換し、それを array_merge 関数を使用して反復処理する必要があります。目的を達成できます。

于 2012-04-26T10:09:56.503 に答える
0

これには特定のphp関数があるとは思わないので、次のことを試してください。

foreach ($array2 as $i => &$item) {
  $item->img = $array2[$i];
}
于 2012-04-26T10:12:09.950 に答える