我试图根据是否有要打印的信息限制打印出哪些字母。 I.E.如果“Y”没有条目,那么列表中不应该有“Y”。下面是我正在进行过滤的代码。它向服务器提交一个调用,该调用只响应以提交的字母开头的条目。
// contextual filter list
$filters['contextual'] = array(
'#attributes' => array(
'class' => array('contextual_filter_list'),
),
'#type' => 'container',
);
$alphabets = range('A', 'Z',);
foreach ($alphabets as $value) {
$filters['contextual'][$value] = array(
'#attributes' => array(
'class' => array('contextual_letter'),
),
'#type' => 'submit',
'#value' => $value,
'#title' => t($value),
'#submit' => $value,
'#name' => 'Select',
);
}
// GET company list for A-Z filter bar
$value = $_GET["Select"];
$qry = db_select('cloud_computing_capability_data', 'cd');
$qry -> fields('cd', cloud_computing_data_company::db_fields());
// condition to query all or a single letter for companies
if ($value != 'View All'){
$qry -> condition('company',$value.'%','LIKE');
};
打印出来:
A | B | C | D | E | F | G |......
我需要打印出来
A | B | C | F | G |......
如果没有“D”和“E”的条目
答案 0 :(得分:0)
您必须查询数据库。由于我不知道您的数据库结构或您正在使用的框架,我将编写简单的SQL查询来执行此操作。
SELECT DISTINCT(main_letter)
FROM `the_table`
WHERE 1 -- add your conditions here, if any
ORDER BY main_letter ASC
您还可以从子字符串中获取主要字母。它看起来像这样:
SELECT DISTINCT(LEFT(name, 1))
-- rest of query
祝你好运!
由您来调整此查询到您正在使用的ORM。
答案 1 :(得分:0)
也许您可以调整数据库查询以仅返回所需的字母,或者始终使用array_filter并忽略没有值的条目。
$result = array_filter($filters['contextual']);
print_r($result);
或许围绕这一行
$result = array_filter($filters['contextual'], function($a){
return !empty($a['the_key_you_need_to_check']);
});
print_r($result);