【问题标题】:Verifying the existence of each variable before adding it to an array在将每个变量添加到数组之前验证其是否存在
【发布时间】:2013-06-12 09:01:39
【问题描述】:

我将十几个不同文本字段中的数据提取到一个多维数组中,但我希望仅在有要添加的元素时才创建一个键。示例:

$colors = array(
  'red'     => $options['red_users'],
  'orange'  => $options['orange_users'],
  'green'   => $options['green_users']
);

假设“orange_users”输入字段中没有数据。除了对每个变量进行条件检查,例如...

if (!$options['orange_users']) {

...如何有效地验证我从中提取的每个输入字段是否存在数据?

【问题讨论】:

  • foreach( $vbulletin->options as $X){...}
  • “除了对每个变量进行条件检查” - 如果确实要验证每个变量不为空,则需要对每个变量进行条件检查。
  • 在您的示例中,您基本上是在复制数组,更改键。因此,在这种特定情况下,最有效的方法是只使用您的原始数组(或者如果您要连接多个数组,则将整个数组原封不动地放在另一个数组中)。

标签: php arrays validation variables conditional


【解决方案1】:

最简单的方法是使用三元 if

  $replacements = array(
    'red'     => isset($vbulletin->options['red_users'])?$vbulletin->options['red_users']:null,
    'orange'  => isset($vbulletin->options['orange_users'])?$vbulletin->options['orange_users']:null,
    'green'   => isset($vbulletin->options['green_users'])?$vbulletin->options['green_users']null
  );

然后使用 array_filter 清除空值

  $replacements = array_filter($replacements);

【讨论】:

  • 这就是我想要的。谢谢。虽然,我注意到你说“最简单”。这是否意味着它不是最有效的,或者有更好的方法?
  • 对于一个您应该使用 isset(或空或 array_key_exists)进行测试的人,否则如果它不存在,您将收到运行时通知。如果未设置 red 的值,您拥有的这个表示法将返回 red 的值,所以它没有多大意义
  • 三元的格式是(expression?true value:false value)
  • 这可能是回答您的第一个问题的最有效和最直接的方式。
  • @jordojuice 酷我不知道返回值的真实部分。但是如果将 isset 测试作为比较,它将返回测试结果而不是测试中变量的值....对吗?
猜你喜欢
  • 2012-10-02
  • 2017-12-13
  • 2012-05-13
  • 2015-05-05
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
相关资源
最近更新 更多