【问题标题】:Foreach loop not properly retrieving values from the databaseForeach 循环未正确从数据库中检索值
【发布时间】:2014-04-24 17:20:08
【问题描述】:

大家好,请问我正在尝试使用 foreach 从我的数据库中检索值,但表中的字段/行之一是我序列化到数据库中的数组。我检索这个值没有问题,但是当我尝试从数据库中获取数组值时。它们加起来是下一个值。即,如果第一个数组计数为 5,第二个数组计数为 3,则在显示第二行时,它会给出 8 个结果而不是 3,下面是我的代码。

       $imageDisplay->getall('images',array('id', 'ASC' ));
        if (!$imageDisplay->count()) {
            # code...
            $imagelist = "<h2>No Images Yet</h2>";
        }
        else {
            $x = 0;
            foreach ($imageDisplay->results() as $imageDisplay) {
                $event = $imageDisplay->event; 
                $cover = $imageDisplay->image_cover;
                $image = unserialize($imageDisplay->image);
                $date = $imageDisplay->date;
                foreach ($image as $key => $image) {
                    # code...
                    $imageset .= "<img src='../images/".$event."/".$image."' />";
                    $x++;
                }
                $imagelist .= "<div class='servicelist'><br /><h2>". $event ."</h2><br><img src='../images/". $cover ."' />
                <div class='clear'></div>".$imageset."
                <span> <a href='index.php?navsection=gallery&editgallerySection=".$imageDisplay->id."'>Edit</a> <a href='index.php?navsection=gallery&deleteID=".$imageDisplay->id."'>Delete</a></span></div><div class='clear high'></div>";
                #$x++;
            }
        }

图像数组是

 Array
 (
 [0] => Array
    (
        [0] => event1.jpg
        [1] => event2.jpg
        [2] => event3.jpg
        [3] => event4.jpg
        [4] => event5.jpg
    )

[1] => Array
    (
        [0] => event1.jpg
        [1] => event2.jpg
        [2] => event3.jpg
        [3] => event4.jpg
        [4] => event5.jpg
        [5] => event6.jpg
        [6] => event7.jpg
        [7] => event8.jpg
        [8] => event9.jpg
    )

[2] => Array
    (
        [0] => bkg-03.png
        [1] => oil.png
        [2] => yamaha.jpg
        [3] => yamaha2.jpg
    )
)

当我回显 imageList 变量时,图像加起来使得第二行图像 = 第一行图像 + 第二行图像等等 搜索了很多,但大多数结果都是用于将值输入数据库。提前致谢

【问题讨论】:

  • 你能告诉我们第一个和第二个循环的var_dump($image);吗?
  • var_dump 返回每个图像数组的数组中的最后一个元素,即字符串 'event4.jpg' (length=10) string 'event9.jpg' (length=10) string 'yamaha2.jpg' (长度=11)
  • 我们需要看到的是整个数组
  • 我已经更新了问题
  • 您可以尝试使用(while) 循环来代替

标签: php arrays foreach


【解决方案1】:

变量$imageset 未重置。请注意,在第二个 foreach 中,它接收自己,加上前一个。立即尝试:

$imageDisplay->getall('images',array('id', 'ASC' ));
if (!$imageDisplay->count()) {
    # code...
    $imagelist = "<h2>No Images Yet</h2>";
}
else {
    $x = 0;
    foreach ($imageDisplay->results() as $imageDisplay) {
        $event = $imageDisplay->event; 
        $cover = $imageDisplay->image_cover;
        $image = unserialize($imageDisplay->image);
        $date = $imageDisplay->date;
        $imageset = '';
        foreach ($image as $key => $image) {
            # code...
            $imageset .= "<img src='../images/".$event."/".$image."' />";
            $x++;
        }
        $imagelist .= "<div class='servicelist'><br /><h2>". $event ."</h2>
        <br>
        <img src='../images/". $cover ."' />
        <div class='clear'></div>".$imageset."
        <span> 
            <a href='index.php?navsection=gallery&editgallerySection=".$imageDisplay->id."'>
                Edit
            </a> 
            <a href='index.php?navsection=gallery&deleteID=".$imageDisplay->id."'>
                Delete
            </a>
        </span></div><div class='clear high'></div>";
        # $x++;
    }
}

【讨论】:

  • 哇,猜猜编程有时真的很痛苦。你是对的。非常感谢
猜你喜欢
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
相关资源
最近更新 更多