在内容数组中获取多个图像数组

时间:2017-01-29 22:41:21

标签: php arrays json loops foreach

我想要实现的是将所有可用的图像从userphotos发布到相同的photo_title / timestamp到一个数组中,并将图像数量发布到streamitem_id下的指定帖子中。

目前帖子应该插入,但如果我一次上传多个图片,则只有一个在帖子中显示。我将如何在已构造的数组'posts'中创建$posts['streamitem_imageuploaded']数组。

这是我到目前为止所拥有的。

$call = "SELECT *
FROM streamdata m
JOIN user t1 ON m.streamitem_creator = t1.id
JOIN user t2 ON m.streamitem_target = t2.id
WHERE 
m.streamitem_id > ".$_GET['streamitem_id']." 
ORDER BY m.streamitem_timestamp DESC";
$check1 = mysqli_query($mysqli, $call) or die(mysqli_error($mysqli));

$json = array(
    'posts' => array(),
);

while($row = mysqli_fetch_array($check1)){

$posts = array();


         $posts['streamitem_id'] = $row['streamitem_id'];


        //start of image code. only ouputs one image in each 'posts' array. 
$sqlhhh = "SELECT * FROM userphotos WHERE photo_name='".$row['photo_title']."' AND photo_ownerid='".$row['streamitem_creator']."' AND photo_datetime='".$row['streamitem_timestamp']."' ORDER BY photo_id DESC";
$resulthhh = mysqli_query ($mysqli,$sqlhhh)or die(mysqli_error($mysqli)); 
$photo_num=mysqli_num_rows($resulthhh);

$images = array();
while ($rowhhh = mysqli_fetch_assoc($resulthhh)) {
$rowhhh = mysqli_fetch_assoc($resulthhh);
    $images[] = $rowhhh['photo_imagedata'];
}

foreach ($images as  $ima){

    if($photo_num==1){
        $posts['streamitem_imageuploaded']='<img  src="data:image/jpeg;base64,'. base64_encode($ima) .'" />';
    }else{
        $posts['streamitem_imageuploaded']='<img class="stream_images" style="width:235px;height:200px;object-fit:cover;margin:2px;padding:2px;" src="data:image/jpeg;base64,'. base64_encode($ima) .'" />';
    }

}


$json['posts'][] =  $posts;
}
}
echo json_encode($json);

1 个答案:

答案 0 :(得分:1)

问题是,您在$posts['streamitem_imageuploaded']循环的每次迭代中覆盖foreach,这就是为什么您总是在$posts['streamitem_imageuploaded']中获取最后一张图片的原因。您必须在每次迭代中将<img ... />(s)附加到$posts['streamitem_imageuploaded']

因此,请按以下方式更改foreach循环,

foreach ($images as  $ima){
    if($photo_num==1){
        $posts['streamitem_imageuploaded'] = '<img  src="data:image/jpeg;base64,'. base64_encode($ima) .'" />';
    }else{
        $posts['streamitem_imageuploaded'][] = '<img class="stream_images" style="width:235px;height:200px;object-fit:cover;margin:2px;padding:2px;" src="data:image/jpeg;base64,'. base64_encode($ima) .'" />';
    }
}