CMB2 – array_search или in_array from repeat_group и значения, разделенные запятыми

У меня эти данные поступают из $myoptions = my_get_option('my_repeat_group');

$p = 'T1X 0L6'; // find me

print_r($myoptions) =

 Array ( [0] => Array ( [region_name] => Alberta [postal_codes] => T1X 0L3,T1X 0L4,T1X 0L5,T1X 0L6,T1X 0L7 [region_discount] => .5 ) [1] => Array ( [region_name] => Ontario [postal_codes] => T1M 0W3,T1M 0W4,T1M 0W5,T1M 0W6,T1M 0W7 [region_discount] => .25 ) ) 

 foreach ( $myoptions as $key => $value ) { if ( in_array($p, $value['postal_codes'] ) { // need to know $key of which array the $p was found, // in this case, I would like to find [0] } } 

Я хотел бы найти $p внутри $value['postal_codes'] , и когда я его найду, верните ключ, из которого он пришел.

$value['postal_codes'] не является array это string , вам нужно либо взорвать ее, как:

 foreach ( $myoptions as $key => $value ) { if (in_array($p,explode(","$value['postal_codes']){ // need to know $key of which array the $p was found, in this case I would like to find [0] } } 

Или поиск по строке

 foreach ( $myoptions as $key => $value ) { if (strstr($value['postal_codes'],$p){ } } 

Или наиболее эффективным способом будет использование array_search при взорванном виде следующим образом:

 foreach($myoptions as $key => $options) { $keys_containing_p[$key] = array_search($p,explode(",",$options['postal_codes'])); }