【问题标题】:Using foreach loop inside a while loop and echo the values在while循环中使用foreach循环并回显值
【发布时间】:2018-02-18 21:07:32
【问题描述】:

我有一个网站,人们可以上传他们的视频,如果用户上传视频,它会在他们的文件夹中创建一个名为 videos 的新文件夹,例如user/Someone/videos/videonamevideos 文件夹中有用户上传的所有视频。然后它将视频插入数据库。这很好用,但是当我尝试在 HTML video 标记中回显这些视频时,我遇到了问题。由于用户可以上传更多视频,我创建了一个名为$urlarray。然后我选择那些属于该用户的videos ($sql = "SELECT * FROM videos WHERE user=?";)。然后我将每个视频项推送到 $url 数组,并使用 foreach 循环回显视频。这里出了点问题。存在重复,因此一个视频会被多次回显,并且缺少网址。

代码:

$echo_videos = "";
$items = "";
$url = array();
$sql = "SELECT * FROM videos WHERE user=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s",$u);
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_assoc()){
    $name = $row["video_file"];
    $items .= "user/$u/videos/$name";
    array_push($url, $items);
    foreach ($url as $key) {
        $echo_videos .= '<video width="400" controls><source src="'.$key.'"></video>';
    }
}

PS:也许$items 变量也应该是一个数组,但我无法将一个数组推送到另一个数组。

【问题讨论】:

    标签: php html arrays foreach echo


    【解决方案1】:

    为什么不直接回显文件名

    while($row = $result->fetch_assoc()){
       echo '<video width="400" controls><source src="user/'.$u.'/videos/'. $row["video_file"].'">
             </video>';
    }
    

    【讨论】:

    • 几乎是好的解决方案,但我会更正您对此的回答:while($row = $result-&gt;fetch_assoc()){ echo '&lt;video width="400" controls&gt;&lt;source src="user/'.$u.'/videos/'. $row["video_file"].'"&gt; &lt;/video&gt;'; }
    • 我不知道为什么,但第一个视频没有出现。
    • 当我注释掉那一行时,$row["video_file"] 将等于没有。
    • 我不明白你最后的评论 .. 不要告诉你用 $row["video_file"] 评论那一行
    • 你写了我应该注释掉 $result = $stmt-&gt;get_result(); 行,但是你已经更改了注释并删除了那部分......但是当我注释掉代码时,代码将不起作用。
    猜你喜欢
    • 2023-04-09
    • 2014-10-19
    • 2013-10-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 2017-05-28
    • 2016-03-14
    • 2012-10-02
    相关资源
    最近更新 更多