如何测试数组中的部分字符串值

How can I test for a partial string value in an array

所以我有一个复选框表单,它将值存储在一个数组中,每个键都有几个值。如何测试一个值是否被选中? in_array() 对于数组中的值不 return 为真。

print_r($array) 结果:

Array ( [auto_loans] => auto_36_new,auto_48_new,auto_60_new,auto_72_new [mortgage_rates] => 30_year_fixed,15_year_fixed,7_1_arm_30_year,7_1_arm_15_year,5_1_arm_30_year,5_1_arm_15year,3_1_arm_30_year )

基本上,如果任何复选框为真,我想输出其相应的比率。

if (in_array("auto_36_new", $array))
  {
  // print the 36 month auto loan rate
  }
elseif (in_array("auto_48_new", $array))
  {
  // print the 48 month auto loan rate
  }
//etc... 

我无法获得任何贷款利率 ID 的 return 正数代码,即使它在数组打印输出中也是如此。我究竟做错了什么?我什至不确定 in_array 是否是处理此问题的最有效方法,因此我不受此约束。理想情况下,由于前端限制,我想将查询限制为一定数量的结果,但首先我需要获取表单结果。

不确定您的前端实际上是如何收集表单值的,但看起来在后端您会得到用逗号连接的检查值...

试试这个

$autoLoans = explode(',', $array['auto_loans']);
if (in_array('auto_36_new', $autoLoans)) {
  //...
}

另一种方法是在特定的数组元素上使用 strpos。一个例子:

<?php

$arr = [
    'auto_loans' => 'auto_36_new,auto_48_new,auto_60_new,auto_72_new',
    'mortgage_rates' => '30_year_fixed,15_year_fixed,7_1_arm_30_year,7_1_arm_15_year,5_1_arm_30_year,5_1_arm_15year,3_1_arm_30_year',
];

if (strpos($arr['auto_loans'], 'auto_36_new') !== false) {
    // print the 36 month auto loan rate
} elseif (strpos($arr['auto_loans'], 'auto_48_new') !== false) {
    // print the 48 month auto loan rate
}
// etc...