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

时间:2019-05-06 20:54:27

标签: php arrays wordpress strpos

因此,我有一个复选框形式,可以将值存储在数组中,每个键具有多个值。如何测试是否检查了值?对于数组中的值,in_array()不会返回true。

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 )

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

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返回正数。我究竟做错了什么?我什至不确定in_array是否是处理此问题的最有效方法,所以我并不局限于此。理想情况下,由于前端限制,我想将查询限制为一定数量的结果,但是首先我需要获取表单结果。请暂停!谢谢

2 个答案:

答案 0 :(得分:0)

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

尝试

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

答案 1 :(得分:0)

另一种方法是在特定数组元素上使用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...