PHP:确定十二个变量中是否有任何一个具有特定值

PHP:确定十二个变量中是否有任何一个具有特定值,php,Php,假设我有12个变量,都有yes/no值。除了 if ($q1=='yes' || $q2=='yes' || $q3=='yes'... 。。。找出这些值中是否至少有一个等于是?这里是数组的var\u dump。我只关心qX值 array(16) { ["q1"]=> array(1) { [0]=> array(2) { ["name"]=> string(2) "q1" ["value"]=>

假设我有12个变量,都有yes/no值。除了

if ($q1=='yes' || $q2=='yes' || $q3=='yes'...
。。。找出这些值中是否至少有一个等于是?这里是数组的
var\u 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"
    }
  }
}

谢谢

这个问题的字面答案大致如下:

if (in_array('yes', [$a, $b, $c, ...]))

但真正的问题是,为什么有十几个显然相关的变量松散地浮动在一起,而不是一开始就将它们放在一个数组中。

您可以使用此代码查找“q”数组和“yes”值

我在数组的键上使用preg_grep查找带有“q”的子数组。
然后,因为值是键,所以我翻转数组(交换键和值的位置)并使用array_intersect_键从$arr中提取匹配的子数组

然后我使用array_列来隔离“value”列

然后作为最后一步,我查看$values数组中是否有任何值“yes”

它可能看起来很复杂,但是一旦你学会了如何使用数组函数,你就会比你那样分配单独的变量节省很多时间

// 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";

为什么会有十几个这样的变量?为什么它们不在某个数组或对象中?它们与几十个其他键/值一起在一个数组中。我将它们放入变量中,以便以后可以将它们用于各种事情。@pee2pee这不是拆分数组的理由。如果您学习如何使用数组,您将看到事情变得多么简单。这是为什么不拆分数组的一个主要示例。用数组的var_转储更新这个问题,我们可以为您提供更多帮助_dump@pee2pee答案贴出来了。