这是$this->图片的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内的图像网址,这是用于创建结构的代码的样子
$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张图片,此代码可以做到这一点,但是我如何才能将每个图片网址都放入div,因此第一个“文件名”从数组转储将代替此处的1
<div class='col-md-3'>1</div>
and then carry on when the next row is created
这是用于生成输出的代码,因为我使用的是MVC系统,这里是所使用的模型和控制器
模型
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;
}
控制者
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:我鼓励您尝试使用代码,看看是否可以进行任何改进,将我的代码片段作为起点,而不是最终解决方案.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。