在Drupal上下文中,在以某种方式标准代码片段打印已检查的公开过滤器时,我无法打印多个值,并且找不到我的foreach循环中缺少的逻辑:
<?php
foreach ($exposed_filters as $filter => $value) {
if ($filter == 'foo') {
$field = field_info_field('field_foo');
$allowed_values = list_allowed_values($field);
//returns an array with 14 string values & numeric keys
//e.g array(0=>'bla', 1=>'bar', 2=>'xx', 3=>'yy')
$h = explode(',', $value);//returns checked ids of foo filter e.g array(0 => 2, 1=>3)
$exp_heb = '';
foreach ($h as $k=>$v) {
$exp_heb .= $allowed_values[$v] . ', ';
}
$exp_heb = substr($exp_heb, 0, -2);
print $exp_heb;
}
}
?>
应该返回: xx,yy 但我得到xx ,,
我一步一步地打印出我的数组,值......一切看起来很好,但结果是错误的。我需要休息吗?
这是dpm($allowed_values)
输出
答案 0 :(得分:0)
这条线可能会削减你的产量吗?
$exp_heb = substr($exp_heb, 0, -2);
答案 1 :(得分:0)
我得到了它的工作。在将它作为键传递之前,我必须获取变量的整数值:
foreach ($h as $k=>$v) {
$exp_heb .= $allowed_values[intval($v)] . ', ';
}
有一个原因我会很高兴被教导,即使它总是一个id,并打印出一个数字,第一次它作为整数传递,但不是。