PHP数组查找元素错误

时间:2015-07-09 20:27:14

标签: javascript php

我有一个将参数传递给后端php文件的javascript文件。这将试图找出哪些值是真的。

这是传递的参数

{"2":true,"3":false,"4":true}

这是将提取True数组的键的PHP代码,

<?php
  print_r(loop_filters($_REQUEST['filters']));

// Functions starts here

  function loop_filters($filters)
  {
    $filters = json_decode($filters);
    // return $filters;
    $filter_array = [];

    while($filter_key = current($filters))
    {
      if($filter_key === true)
      {
        $filter_array[] = key($filters);
      }
      next($filters);
    }
    return $filter_array;
  }
?>

然而输出是

Array ( [0] => 2 )

为什么它没有检测到4为真,并给出类似

的输出
Array ( [0] => 2 , [1] => 4)

出了什么问题,我该如何解决?感谢

2 个答案:

答案 0 :(得分:5)

您的代码无法正常运行:

while($filter_key = current($filters))

因为在第二次迭代中,您的值将是:FALSE并且我们都知道:

while(FALSE)

这不会运行,所以你在第一次迭代之后就结束了循环。

如何解决?只需删除next()调用并使用foreach循环替换while循环,例如

function loop_filters($filters) {
    $filters = json_decode($filters);

    foreach($filters as $key => $filter_key) {
        if($filter_key === true) {
            $filter_array[] = $key;
        }
    }

    return $filter_array;
}

答案 1 :(得分:1)

Rizier123解决了您的代码问题,但是对于这种特定情况,要获得true值的键更简单:

$filter_array = array_keys($filters, true, true);