从php中的Multi-checkbox true / false数组返回true元素

时间:2012-08-18 15:10:52

标签: php arrays string list return

我在php上很糟糕。我有一个以这种方式输出数组的Multicheckbox:

Array
  (
   [value1] => true
   [value2] => false
   [value2] => false
   [value4] => false
   [value5] => true
   [value6] => false
  )

我想返回一个只包含true的元素(值)的数组。然后我会申请:

    $list_of_true_values = explode(',', $array_i_am_looking_for);
    return $list_of_true_values;

最后我想要返回:value1,value5。

感谢

3 个答案:

答案 0 :(得分:2)

array_keys($array, true);将返回包含true值的数组,这是您需要的..

答案 1 :(得分:2)

正如Rajat所说,你可以使用array_keys()功能。我还要补充一点,如果您希望获得value1,value5的输出,则不应使用explode(),而应该使用implode()

return implode(",", array_keys($array, true));

只需要你。


根据您的评论,如果您想将密钥用单引号括起来:

$keys = array_keys($array, true);
array_walk($keys, function(&$v, $k){$v = "'" . $v . "'";});
return (implode(",", $keys));

这称为Anonymous (Lambda) Syntax

答案 2 :(得分:1)

如果您具有true / false值,则可以在没有回调的情况下使用PHP的array_filter()

$values = array_filter($_POST['data']);

如果没有回调函数,array_filter()将过滤掉所有“false”和空值。然后,为了从获得的列表中获取密钥,您可以使用PHP的array_keys(),因为只有具有“true”值的那些将在$values数组中:

return array_keys($values);

在您的确切规范中,使用$search_value的可选array_keys()参数可能就足够了,正如Rajat在其答案中所示。但是,如果您需要扩展要保留或丢弃的值列表,我建议使用array_filter()