【问题标题】:Using in_array inside a foreach to filter associative array在 foreach 中使用 in_array 过滤关联数组
【发布时间】:2015-12-14 16:40:26
【问题描述】:

我有一个 JSON 数组转换为 PHP 关联数组。我正在尝试遍历这个关联数组,如果键与单独数组 ($filter) 中保存的值匹配,我想从关联数组中回显 keyvalue

$filter = array("test1", "test");

foreach ($central as $key => $value) {
   $key = str_replace("_", " ", $key); 
   if(in_array('$filter', $key)){
       echo "<ul>".ucwords($key).':' .' '. $value."</ul>";
    }
   else { 
       continue;
   }
}

所以回顾一下,如果我的$central 关联数组的$key 等于我的$filter 数组中的一个值,我想回显这些值。否则转到循环中的下一项。但是,此代码不起作用,

语法错误,意外的 '=>'

【问题讨论】:

标签: php arrays associative-array


【解决方案1】:

要使用in_array 函数,您必须插入要查找的密钥(针)作为第一个参数,将数组作为第二个参数。

更多信息请参见php documentation

这是正确调用 in_array 函数的代码。

foreach ($central as $key => $value) {
    $key = str_replace("_", " ", $key); 
    if(in_array($key, $filter)){
        echo "<ul>".ucwords($key).':' .' '. $value."</ul>";
    }
}

请注意,continue 语句是无用的,因为它位于 for 循环的末尾。

【讨论】:

    【解决方案2】:

    不确定我是否理解正确,但我认为你的“针”和“干草堆”是错误的。 也不需要 else 语句。

    foreach ($central as $key => $value) {
       $key = str_replace("_", " ", $key); 
       if(in_array($key, $filter)){
         echo "<ul>".ucwords($key).':' .' '. $value."</ul>";
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      相关资源
      最近更新 更多