需要根据“内容”表有条件地绑定页面下拉列表。页面标题存储在关联数组中,“内容”表中存储有页面代码。这是代码
返回页面标题的功能
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的新功能,不知道出了什么问题
答案 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;
}