【问题标题】:Get multiple images array inside array of content在内容数组中获取多个图像数组
【发布时间】:2017-06-15 01:43:52
【问题描述】:

我想要实现的是将所有可用的图片从使用相同 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);

【问题讨论】:

    标签: php arrays json loops foreach


    【解决方案1】:

    问题是,您在foreach 循环的每次迭代中都覆盖了$posts['streamitem_imageuploaded'],这就是为什么您总是得到$posts['streamitem_imageuploaded'] 中的最后一个图像。您必须在每次迭代中将这些 &lt;img ... /&gt;(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) .'" />';
        }
    }
    

    【讨论】:

    • 这次编辑似乎还是一样。我发两张时只显示一张。
    • @Gateway 首先检查您的数据库表,确保它包含所有图像的信息。然后在您的代码中执行var_dump($images); 并检查该数组是否包含所有所需的图像信息。
    • 它也获取第一张图片,而不是最后一张。
    • 好的,我想我知道问题出在哪里。它现在已经变成了一个数组。只是因为图像位于 userphotos 下 photo_streamitem_id 下的两个单独的帖子中。我需要以某种方式将它们与查询合并,以便它们出现在相同的 id 下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    相关资源
    最近更新 更多