Php 在将每个变量添加到数组之前验证其存在性

Php 在将每个变量添加到数组之前验证其存在性,php,arrays,validation,variables,conditional,Php,Arrays,Validation,Variables,Conditional,我将从十几个不同的文本字段中提取数据到一个多维数组中,但我希望只有在有元素添加到其中时才能创建一个键。例如: $colors = array( 'red' => $options['red_users'], 'orange' => $options['orange_users'], 'green' => $options['green_users'] ); 假设“orange_用户”输入字段中没有数据。除了对每个变量运行条件检查外,例如 if(!$o

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

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

假设“orange_用户”输入字段中没有数据。除了对每个变量运行条件检查外,例如

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


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

最简单的方法是使用三值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);

foreach($vbulletin->options as$X){…}
“除了对每个变量运行条件检查”-如果确实要验证每个变量是否为空,则需要对每个变量进行条件检查。在您的示例中,基本上是复制数组,更改键。因此在这种特定情况下,最有效的方法是仅使用原始数组(如果要加入多个数组,也可以将整个数组不变地放在另一个数组中)。这就是我要找的。谢谢。不过,我注意到你说的“最简单”。这意味着这不是最有效的方法,还是有更好的方法?对于其中一种方法,你应该使用isset(或空或数组键存在)如果不存在,您将得到运行时通知。如果未设置红色的值,则您使用的此符号将返回红色的值,因此没有多大意义三元的格式是
(表达式?真值:假值)
回答您的第一个问题可能也是最有效、最直接的方法。@jordo我不知道返回值的真实性。但是如果使用isset测试作为比较,它将返回测试结果,而不是测试中变量的值……对吗?