php - 带有 IF 语句的嵌套 foreach 循环

标签 php mysql

数据库表:

电影(id_film PK,名字)

流派(id_genre PK,名称)

电影类型(id_film FK,id_genre FK)

这会输出流派表中的所有流派:

$genremenu = $veza -> prepare("select * from genre");
$genremenu -> execute();
$resultmenu = $genremenu -> fetchALL(PDO::FETCH_OBJ);

这会输出特定电影的 film_genre 表中所有选定的流派:

$izraz = $veza -> prepare("select * from genre a inner join film_genre b on a.id_genre=b.id_genre where b.id_film=:id_film");
$izraz -> execute(array("id_film" => $film -> id_film));
$selectedgenre = $izraz -> fetchAll(PDO::FETCH_OBJ);

我在将数据从数据库输出到表单中的多个选定列表时遇到问题。这是一个电影数据库,我正在做每次迭代以读取所有电影类型行以输出到多个选择字段。但是我在将“选定”流派输出到该列表时遇到了麻烦。代码是

foreach ($resultmenu as $line) {
    foreach ($selectedgenre as $sg) {
       if ($line-> id_genre === $sg-> id_genre) {
          echo "<option value=\"" . $line-> id_genre . "\" selected>" . $line-> name . "</option>";
        } else {
          echo "<option value=\"" . $line-> id_genre . "\">" . $line-> name . "</option>";
           }
        }

      }

现在我知道我在选定列表中有重复的输出,因为例如,如果电影有 2 种类型,比如说喜剧和犯罪,这意味着他将对每一行 $line 迭代两次以检查 $selectedgenre,所以我得到如下输出:

  1. 喜剧
  2. 喜剧“入选”
  3. 犯罪
  4. 犯罪“选择”
  5. 恐怖
  6. 恐怖
  7. 等等

我是 php 的新手,所以我想问一下如何获得没有重复条目的正确列表输出?我试过刹车并继续但没有工作,或者我没有正确使用它?请帮助并提供(如果可能)更多替代解决方案。谢谢!

最佳答案

你需要建立一个你在电影中拥有的流派数组,然后将它们与所有流派进行交叉检查。

试试这个

<?php

$genres = array();
foreach ($selectedgenre as $sg) {
   $genres[] = $sg->id_genre;
}


foreach ($resultmenu as $line) {

   if (in_array($line->id_genre,$genres)) {
      echo "<option value=\"" . $line->id_genre . "\" selected>" . $line->name . "</option>";
    } else {
      echo "<option value=\"" . $line->id_genre . "\">" . $line->name . "</option>";
    }
}

?>

关于php - 带有 IF 语句的嵌套 foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39345435/

相关文章:

mysql - 转换mySQL表中的日期格式并按日期对结果进行排序

php - 构建查询以仅在一天中的特定时间之后显示今天的事件

php - 如何重定向以 100% 确定重定向后 REFERRAL 已清除

php - 如何从模板文件插入到 <head> 中?

php - : sudo pecl install mongodb 时出现 fatal error

Rails 中的 MySQL 全文搜索?

mysql - 树莓派 3 : LAMP Web Server with WordPress

php - PHP 函数调用开销有多重要?

php - CRON 作业不断出错

php - 试图从 mysql 获取 json 格式化程序