0

我很不擅长 php。我有一个以这种方式输出数组的多复选框:

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

我想返回一个仅包含真实元素(值)的数组。然后我将应用这个:

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

最后我想返回这个:value1,value5。

谢谢'

4

3 回答 3

2

array_keys($array, true);将返回带有真实值键的数组,您需要..

于 2012-08-18T15:14:26.787 回答
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));

这称为匿名 (Lambda) 语法

于 2012-08-18T15:43:16.743 回答
1

如果你特别有true/false值,你可以使用 PHParray_filter()没有回调:

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

如果没有回调函数,array_filter()将过滤掉所有的“假”和空值。然后,要从获得的列表中获取键,您可以使用 PHP array_keys(),因为只有具有“真”值的键才会在$values数组中:

return array_keys($values);

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

于 2012-08-18T15:13:04.800 回答