我们说我有十几个变量,都有/无值。除了......之外还有更好的方法吗?
if ($q1=='yes' || $q2=='yes' || $q3=='yes'...
...要确定这些值中是否至少有一个等于是?这是数组的var_dump
。我只关心qX
值
array(16) {
["q1"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(2) "q1"
["value"]=>
string(1) "no"
}
}
["q2"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(2) "q2"
["value"]=>
string(1) "no"
}
}
["q3"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(2) "q3"
["value"]=>
string(1) "no"
}
}
["q4"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(2) "q4"
["value"]=>
string(1) "no"
}
}
["q5"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(2) "q5"
["value"]=>
string(1) "no"
}
}
["q6"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(2) "q6"
["value"]=>
string(1) "no"
}
}
["q7"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(2) "q7"
["value"]=>
string(1) "no"
}
}
["q8"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(2) "q8"
["value"]=>
string(1) "no"
}
}
["q9"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(2) "q9"
["value"]=>
string(1) "no"
}
}
["q10"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(3) "q10"
["value"]=>
string(1) "no"
}
}
["q11"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(3) "q11"
["value"]=>
string(1) "no"
}
}
["q12"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(3) "q12"
["value"]=>
string(1) "no"
}
}
["fitness_test_pst"]=>
array(1) {
[0]=>
array(3) {
["text"]=>
string(22) "1 day PST (Bleep Test)"
["name"]=>
string(16) "fitness_test_pst"
["value"]=>
string(1) "1"
}
}
["pst_date"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(8) "pst_date"
["value"]=>
string(8) "2-5-2018"
}
}
["location"]=>
array(1) {
[0]=>
array(3) {
["text"]=>
string(8) "Here or there"
["name"]=>
string(8) "location"
["value"]=>
string(8) "Here or there"
}
}
["confirm"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(7) "confirm"
["value"]=>
string(1) "yes"
}
}
}
由于
答案 0 :(得分:6)
这个问题的字面答案将是:
if (in_array('yes', [$a, $b, $c, ...]))
但真正的问题是,为什么你有十几个明显相关的变量松散地浮动,而不是像开始那样将它们放在一个数组中。
答案 1 :(得分:0)
您可以使用此代码查找" q"数组和值"是"。
我在数组的键上使用preg_grep来查找带有" q"的子数组。
然后因为值是键,我翻转数组(交换键和值的位置)并使用array_intersect_keys从$ arr中提取匹配的子数组。
然后我使用array_column来隔离"值"柱。
然后作为最后一步,我看看是否有任何价值"是"在$ values数组中。
它可能看起来很复杂,但是一旦你学会了如何使用数组函数,与你分配单独的变量相比,你将节省大量的时间。
// Find all arrays with "q"
$q = array_intersect_key($arr, array_flip(preg_grep("/q\d+/", array_keys($arr))));
// From "q" array get all values
$values = array_column($q, 'value');
// See if any has 'yes'
If(in_array("yes", $values)) echo "at least one yes";