显示子数组> 3 - PHP

时间:2013-07-26 18:48:34

标签: php

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

有一个名为lists的表(带有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个不同的$值)时显示列表。

有人能告诉我怎么做吗?谢谢!!

编辑:此外,我可能有可能过于复杂。如果我这样做,请告诉我。

2 个答案:

答案 0 :(得分: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,如果有超过3个DISTINCT展示ID,则只会返回一个数据集。

答案 1 :(得分:0)

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

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

if(is_array($list)){
    if(count($list) > 3){
        //more than 3 shows found, execute code!
    }
}