【问题标题】:I want to put a while loop into an array我想将一个while循环放入一个数组
【发布时间】:2013-12-07 13:12:27
【问题描述】:

我有一个多维数组,在"images" 下我想从我的数据库中循环 4 行。这意味着我正在尝试将循环放入数组中。帮帮我。

$sql_album = "SELECT * FROM albums";
$res_album = mysql_query($sql_album) or die(mysql_error());

$albums = array();

while ($row_album = mysql_fetch_assoc($res_album)) {
    $albums[$row_album['title']] = array(
        "description" => $row_album['description'], 
        "date" => $row_album['date'], 
        "images" => array(
            //i want to insert a loop here shown down
        )
    );
}

这是我要插入的循环,我在上面的脚本中写了注释:

$sql_thumb = "SELECT * FROM photos WHERE album_id = '".$row_album['id']."' LIMIT 0, 4";
$res_thumb = mysql_query($sql_thumb) or die(mysql_error());

while ($row_thumb = mysql_fetch_assoc($res_thumb)) {
    echo $row_thumb['thumb_url'];
}

【问题讨论】:

  • 据我所知,php不允许你这样做。
  • 为什么不先运行循环,然后将结果插入“图像”元素?那应该行得通。不要让你的代码被无数嵌套的东西弄得一团糟。
  • @srain 是的,但必须有办法。比如进入“images”创建一个数组然后在脚本末尾做一个循环
  • 这是一个愚蠢的解决方案。请参阅加入。

标签: php mysql arrays loops multidimensional-array


【解决方案1】:

从这里开始……

include('../path/to/mysqli/connection/statements');

$query = "
SELECT a.id
     , a.title
     , a.description
     , a.date
     , p.thumb_url
  FROM albums a
  LEFT
  JOIN photos p
    ON p.album_id = a.id
 ORDER
    BY a.id;
";

$result = mysqli_fetch_assoc($db,$query);

【讨论】:

  • 有效,但我应该如何将查询结果插入“图像”元素?
  • 好吧,粗略地说,while($current_album == $row_album['title']){$image[] = $row['image'];} 但这是标准的东西——而且有许多人更好地为在 PHP 中构建循环提供建议
【解决方案2】:

遗憾的是 PHP 不允许这种用法。但是你可以做这样的事情

$sql_album = "SELECT * FROM albums";
$res_album = mysql_query($sql_album) or die(mysql_error());

$albums = array();

while ($row_album = mysql_fetch_assoc($res_album)) {
    $albums[$row_album['title']] = array(
        "description" => $row_album['description'], 
        "date" => $row_album['date'], 
        "images" => array()
    );

    $sql_thumb = "SELECT * FROM photos WHERE album_id = '".$row_album['id']."' LIMIT 0, 4";
    $res_thumb = mysql_query($sql_thumb) or die(mysql_error());

    while ($row_thumb = mysql_fetch_assoc($res_thumb)) {
        $albums[$row_album['title']]["images"][] = row_thumb['thumb_url'];
    }
}

【讨论】:

  • 我知道。我只是希望找到另一种方法来做到这一点。
  • 嗯,有很多方法可以实现这种效果。你需要更具体地说明你想要什么。
  • 我不会称之为“悲伤”。在数组构造函数中编写代码是我只在 Python 中见过的一个特性,即使在那里,它也经常使代码更难阅读。
猜你喜欢
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 2017-02-18
  • 1970-01-01
  • 2015-05-10
  • 2021-04-16
  • 1970-01-01
相关资源
最近更新 更多