【问题标题】:Return true elements from a Multi-checkbox true/ false array in php从 php 中的多复选框 true/false 数组返回 true 元素
【发布时间】:2012-08-14 17:18:09
【问题描述】:

我很不擅长 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。

谢谢'

【问题讨论】:

    标签: php arrays string list return


    【解决方案1】:

    如果您特别有 true/false 值,则可以使用 PHP 的 array_filter() 而无需回调:

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

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

    return array_keys($values);
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢 Rajat,我不知道为什么但只能这样工作:array_keys($array, 'true')
      【解决方案3】:

      正如 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

      【讨论】:

      • 谢谢,关于 implode 的提示,我会给你正确的答案。出于某种原因(我对 php 了解不多)它只能像这样工作:'true' 而不是 true (array_keys($array, 'true'))
      • 原因是,$array 中的值是字符串而不是实际的布尔值。欢迎来到 PHP 的美妙世界——需要大量练习! - 玩得开心。 ;)
      • 乔丹,还有一件事,我怎样才能返回这样的值:'value1','value5' 而不是 value1,value5?
      猜你喜欢
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 2010-11-22
      • 2015-10-03
      • 1970-01-01
      相关资源
      最近更新 更多