在foreach中使用in_array来过滤关联数组

时间:2015-12-14 16:40:27

标签: php arrays associative-array

我将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;
   }
}

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

  

语法错误,意外&#39; =&gt;&#39;

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

要使用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循环的末尾。