如何在数组内的数组中获得唯一的第一个图像

时间:2017-05-16 21:04:28

标签: php codeigniter foreach

这里我有一个数组(第一个数组)里面有一个数组(第二个数组),现在我想只显示第二个数组的第一个图像( galleryImages ),怎么做呢。我试过但我无法得到结果

  

的print_r($响应);

 Array
(
    [0] => stdClass Object
        (
            [gallery_id] => 2
            [title] => Annual Day 2017
            [description] => 
            [galleryImages] => ["1.jpg","2.jpg","3.jpg","4.jpg"]
            [reg_on] => 2017-05-17 01:55:12
            [created_by] => rajeshdash123@gmail.com
            [school_id] => 2
            [status] => 0
        )

    [1] => stdClass Object
        (
            [gallery_id] => 3
            [title] => Sports Day
            [description] => 
            [galleryImages] => ["1.jpg","2.jpg","3.jpg"]
            [reg_on] => 2017-05-17 01:55:36
            [created_by] => rajeshdash123@gmail.com
            [school_id] => 2
            [status] => 0
        )

)
  

预期结果

 {
  "status": "Success",
  "data": [
    {
      "gallery_id": "2",
      "title": "Annual Day 2017",
      "description": "",
      "galleryImagesCount": 4,
      "gallery":"1.jpg"
    },
    {
      "gallery_id": "3",
      "title": "Sports Day 2017",
      "description": "",
      "galleryImagesCount": 4,
      "gallery":"1.jpg"
    }
  ],
}
  

我试过这样但是我得不到确切的结果

$images = array();
foreach ($response as $key => $value)
{
    $img['gallery_id'] = $value->gallery_id;
    $img['title'] = $value->title;
    $img['description'] = $value->description;
    $img['galleryImagesCount'] = count(json_decode($value->galleryImages,true));
    $img['gallery'] = json_decode($value->galleryImages,true);
    array_push($images,$img);

}

$return=array('status'=>"Success",'Images'=>$images);
echo json_encode($return);
  

获得结果

    {
  "status": "Success",
  "Images": [
    {
      "gallery_id": "2",
      "title": "Annual Day 2017",
      "description": "",
      "galleryImagesCount": 4,
      "gallery": [
        "d17ac9d0aeb6435eaa294e0d69d4cc8f.jpg",
        "a91945e0cf55379f51cf5faef10d7a4a.jpg",
        "2d1501045ddbb3ccc238e70f9af05027.jpg",
        "071c3b5f969bed1d1e2ee4b6531e4444.jpg"
      ]
    },
    {
      "gallery_id": "3",
      "title": "Sports Day",
      "description": "",
      "galleryImagesCount": 4,
      "gallery": [
        "f0ba574fd46a01ff5a41855a97c710ca.jpg",
        "1d10802f1b74e660117f36bd6dd0aa26.jpg",
        "e705fb66f767a1b914200ca8d3cae700.jpg",
        "3d5d8828331e13d3decc94021a64e5ca.jpg"
      ]
    }
  ]
}

这里发生的事情意味着图库即将推出阵列,对于我来说,我不想要数组我只需要第一张图片,请检查我的预期结果,更新答案

  
      
  • 更新预期结果
  •   
{
  "status": "Success",
  "Images": [
    {
      "gallery_id": "2",
      "title": "Annual Day 2017",
      "description": "",
      "galleryImagesCount": 4,
      "gallery": [
        {
       "galleryimage": "1.jpg"
        },
        {
       "galleryimage": "2.jpg"
        }
      ]
    },
    {
      "gallery_id": "3",
      "title": "Sports Day",
      "description": "",
      "galleryImagesCount": 4,
       "gallery": [
        {
       "galleryimage": "1.jpg"
        },
        {
       "galleryimage": "2.jpg"
        }
      ]
    }
  ]
}

2 个答案:

答案 0 :(得分:0)

而不是<html> aaa()ccc </html>,使用for循环来遍历[galleryImages] => ["1.jpg","2.jpg","3.jpg"]

创建一个galleryImages对的关联数组,如key =>value

虽然[galleryImages] => ["galleryimage1" => "1.jpg", "galleryimage2" => "2.jpg", "galleryimage3" => "3.jpg"]会得到预期的输出。

答案 1 :(得分:0)

我的更改和解释位于代码块中:

代码:(Demo

// assumed that previous line was something like $response=json_decode($json);
$response=[
    (object)[
        'gallery_id'=>2,
        'title'=>'Annual Day 2017',
        'description'=>'', 
        'galleryImages'=>["1.jpg","2.jpg","3.jpg","4.jpg"],
        'reg_on'=>'2017-05-17 01:55:12',
        'created_by'=>'rajeshdash123@gmail.com',
        'school_id'=>2,
        'status'=>0
    ],
    (object)[
        'gallery_id'=>3,
        'title'=>'Sports Day',
        'description'=>'', 
        'galleryImages'=>["1.jpg","2.jpg","3.jpg"],
        'reg_on'=>'2017-05-17 01:55:36',
        'created_by'=>'rajeshdash123@gmail.com',
        'school_id'=>2,
        'status'=>0
    ]
];

foreach ($response as $value){  // removed $key=> because it was unnecessary
    $img['gallery_id'] = $value->gallery_id;
    $img['title'] = $value->title;
    $img['description'] = $value->description;
    $img['galleryImagesCount'] = count($value->galleryImages);  // removed json_decode()
    $img['gallery'] = $value->galleryImages[0];  // removed json_decode and added [0] to access first
    $images[]=$img;  // swapped push() call with identical function-less "push"
}

if(isset($images)){  // added this condition to ensure there was something to return
    $return=array('status'=>"Success",'Images'=>$images);
    //var_export($return);
    echo json_encode($return);
}else{
    // enter some sort of error message / default behavior
}

输出:

{"status":"Success","Images":[{"gallery_id":2,"title":"Annual Day 2017","description":"","galleryImagesCount":4,"gallery":"1.jpg"},{"gallery_id":3,"title":"Sports Day","description":"","galleryImagesCount":3,"gallery":"1.jpg"}]}