gpt4 book ai didi

php - 将图像放入 foreach 循环中的行

转载 作者:可可西里 更新时间:2023-11-01 01:00:56 25 4
gpt4 key购买 nike

我有一组以这种格式返回的图像文件名。

这里是 $this->images 的 var_dump() ,其中存储了文件名

 array (size=9)
0 =>
object(stdClass)[8]
public 'filename' => string '1416073696I0QHU.jpg' (length=19)
public 'primary' => string '1' (length=1)
1 =>
object(stdClass)[9]
public 'filename' => string '1416073696cTU23.jpg' (length=19)
public 'primary' => string '0' (length=1)
2 =>
object(stdClass)[10]
public 'filename' => string '1416073696uxsvq.jpg' (length=19)
public 'primary' => string '0' (length=1)
3 =>
object(stdClass)[11]
public 'filename' => string '1416073696uBYgo.jpg' (length=19)
public 'primary' => string '0' (length=1)
4 =>
object(stdClass)[12]
public 'filename' => string '1416073696vLBiH.jpg' (length=19)
public 'primary' => string '0' (length=1)
5 =>
object(stdClass)[13]
public 'filename' => string '1416073696rOiFe.jpg' (length=19)
public 'primary' => string '0' (length=1)

我目前有创建所需行的代码,但我不确定如何在我创建的 div 中获取图像 url,这是创建结构的代码的样子

    $images = $this->images;
$imagesPerLine = 4;
$arraycount = count($images);
$ammountofrows = ceil($arraycount / $imagesPerLine);

for ($i = 0; $i < $ammountofrows; $i++) {
echo"<div class='row'>
<div class='col-md-3'>1</div>
<div class='col-md-3'>2</div>
<div class='col-md-3'>3</div>
<div class='col-md-3'>4</div>
</div>";
}

在这个例子中,我们需要两行,因为每行有 4 张图像,而我们有 5 张图像,这段代码就是这样做的,但是我如何才能将每个图像 url 放入 div,所以第一个“文件名”数组转储之外将代替此处的 1

    <div class='col-md-3'>1</div>        

and then carry on when the next row is created

这是用于生成输出的代码,因为我使用的是 MVC 系统,这里是使用的模型和 Controller

型号

    public function GetImage() {
$sql = "SELECT `filename`, `primary` FROM `user_img` WHERE `user_id` = :user_id";
$query = $this->db->prepare($sql);
$query->execute(array(':user_id' => $_SESSION['user_id']));
$filepath = $query->fetchAll();
return $filepath;
}

Controller

function imageupload() {
Auth::handleLogin();
$profile_model = $this->loadModel('profile');
$this->view->images = $profile_model->GetImage();
$this->view->render('profile/imageupload');
}

最佳答案

有几种方法可以解决这个问题,使用您的方法,您将需要两个循环,一个循环遍历行(如您提供的那样),另一个循环遍历图像。如果可以避免,我倾向于远离嵌套循环。

    for ($i=0; $i < $amountOfRows; $i++) {
echo "<div class='row'>";
for ($j=$i*4; $j < ($i*4+4); $j++) {
if (!isset($images[$j])) {
break;
}
echo "<div class='col-md-3'>{$images[$j]->filename}</div>";
}
echo "</div>";
}

在上面的循环中,$images 指的是图像数组。

另一种选择是直接遍历图像数组并使用模块化算法生成您的画廊。这是一种方法:

    foreach ($images as $key=>$image) {
if (!($key%4)) {
echo "<div class='row'>";
}
echo "<div class='col-md-3'>{$image->filename}</div>";
if (!(($key+1)%4) || (($key+1) == count($images))) {
echo "</div>";
}
}

同样在上面的代码片段中,$images 指的是包含图像的数组。

注意:在第二个代码片段中,我特意包含了运算符优先级的圆括号。

注意 2:我鼓励您尝试使用代码,看看是否可以做出任何改进,将我的代码片段视为起点,而不是最终解决方案。

关于php - 将图像放入 foreach 循环中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26949888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com