如何在PHP

时间:2018-09-27 16:16:39

标签: php codeigniter

需要根据“内容”表有条件地绑定页面下拉列表。页面标题存储在关联数组中,“内容”表中存储有页面代码。这是代码

返回页面标题的功能

    public function getPageTitles(){    
     $pageTitles = array("Home"=> "Home", 
              "AboutUs"=> "About Us", //AboutUs will save in database as pageCode
              "Features"=> "Features",
              "ContactUs"=> "Contact Us");

     return $pageTitles;
  }

用于检查页面是否包含内容的功能:

public function getPageTitlesWithNoContent()
{
    $pageTitles = $this->getPageTitles();

    $this->db->distinct('pageCode');
        $this->db->select('pageCode');
        $this->db->from('content');
    $this->db->where('status', 1);      
    $data = $this->db->get();

    $queryResult = $data ? $data->result_array() : 0 ;

    $emptyPageTitle = array();

    foreach($pageTitles as $x => $x_value)
    {
        $hasContent = in_array($x, $queryResult);

        if (!$hasContent){ 
         $emptyPageTitle[$x] = $x_value;
        }
    }

    return $emptyPageTitle;
}

此函数将返回所有页面标题。.php的新功能,不知道出了什么问题

3 个答案:

答案 0 :(得分:2)

检查表中的名称字段是否相同?用大写的第一个字符?

还要在此循环中更改代码:

foreach($pageTitles as $x => $x_value)
{
    if (in_array($x, $queryResult)){ 
     $emptyPageTitle[$x] = $x_value;
    }
}

我删除了!检查条件为负

答案 1 :(得分:1)

按照@TamilvananN的指导,我打印了queryResult并尝试了以下解决方法:

    foreach($pageTitles as $x => $x_value)
        {
            foreach ($queryResult as $item) 
            {
                if (!($x == $item['pageCode'])){ 
                 $emptyPageTitle[$x] = $x_value;
                }
            }
        }

它正在工作,但是正如您所看到的那样,这是一个循环。..这可能是非常昂贵的..请您分享一下任何比较结果的快速方法。

答案 2 :(得分:1)

@NMathur我想你差不多了。在该代码中为您做了一些更改,请检查它。

public function getPageTitlesWithNoContent() {

    $pageTitles = $this->getPageTitles();

    $this->db->select('pageCode');
    $this->db->from('content');
    $this->db->where('status', 1); 
    $this->db->group_by('pageCode');      
    $query = $this->db->get();

    $queryResult = array();

    foreach ($query->result_array() as $row) { // This loop should need to form an array based on query result
       $queryResult[$row['pageCode']] = $row['pageCode'];
    }

    $emptyPageTitle = array_diff_key($pageTitles,$queryResult); // Compares the keys from array1 against the keys from array2 and returns the difference

    return $emptyPageTitle;

}