检索穿过数组的值会产生非逻辑结果

时间:2015-08-12 15:55:28

标签: php arrays foreach

在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)输出

allowed values

2 个答案:

答案 0 :(得分:0)

这条线可能会削减你的产量吗?

$exp_heb = substr($exp_heb, 0, -2);

答案 1 :(得分:0)

我得到了它的工作。在将它作为键传递之前,我必须获取变量的整数值:

foreach ($h as $k=>$v) {
  $exp_heb .= $allowed_values[intval($v)] . ', ';
}

有一个原因我会很高兴被教导,即使它总是一个id,并打印出一个数字,第一次它作为整数传递,但不是。