1

所以我有一个电视节目网站,我创建了自定义列表,您可以在其中添加您想要的任何电视节目。

有一个名为列表的表(带有 user_id,list_title)和另一个名为 show_lists 的表,其中包含(list_id,show_id)。

所以我的PHP在那里:

     <?php
   $findlistsq = $conn->prepare('SELECT * FROM show_lists, shows, lists 
    WHERE lists.user_id = :user_id AND 
    lists.list_id = show_lists.list_id AND
    shows.id = show_lists.show_id');
   $findlistsq->execute(array(':user_id' => 2));
   $listscount = $findlistsq->rowCount();
         echo $listscount;
   $list = array();
   while ($listarray = $findlistsq->fetch()) {

    $list[$listarray['list_title']][$listarray['name']] = $listarray;

   }
   ?>    


   <?php
   foreach ($list as $key => $show) {
        echo $key; //echo title of list
       foreach ($show as $key => $value) {


        echo $value['name'];  //echo tv shows
     ;
    }
   }
   ?>

基本上,我创建了一个数组来将一个列表加入到它的电视节目中,显示列表的标题以及它包含的任何内容等等。我的问题是:我只想在节目超过 3 个时才显示列表(至少 3 个不同的 $value)。

谁能告诉我我该怎么做?谢谢!!

编辑:另外,我可能会过度复杂化这一点。如果我这样做了,请告诉我。

4

2 回答 2

1

您对数据的解释不是很好,但是您可以尝试在SELECT语句中这样做,这比弄乱数组要快。

$findlistsq = $conn->prepare('SELECT * 
  FROM show_lists, shows, lists 
  WHERE 
    lists.user_id = :user_id AND 
    lists.list_id = show_lists.list_id AND
    shows.id = show_lists.show_id AND 
    COUNT(DISTINCT shows.id) > 3');

这将计算DISTINCT(唯一的)节目 ID,并且仅在节目 ID 超过 3 个时才返回数据集DISTINCT

于 2013-07-26T18:56:05.430 回答
0

您将需要查看 is_array() 和 count()

$list = array('show1','show2','show3');

if(is_array($list)){
    if(count($list) > 3){
        //more than 3 shows found, execute code!
    }
}
于 2013-07-26T18:52:26.467 回答