我在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。
感谢
答案 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));
答案 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()
。