У меня есть массив, и в этом массиве у меня есть массив, который выглядит так: show_me_160
этот ключ может немного измениться, поэтому иногда страница может загружаться, а ключ массива может быть show_me_120
, я хочу сейчас можно просто сопоставить строку массива до последнего _
, чтобы я мог проверить, что это значение после последнего подчеркивания?
Выбор ключа массива на основе частичной строки
Ответ 1
одно решение, о котором я могу думать:
foreach($myarray as $key=>$value){
if("show_me_" == substr($key,0,8)){
$number = substr($key,strrpos($key,'_'));
// do whatever you need to with $number...
}
}
Ответ 2
Недавно я столкнулся с подобной проблемой. Вот что я придумал:
$value = $my_array[current(preg_grep('/^show_me_/', array_keys($my_array)))];
Ответ 3
вам придется перебирать массив, чтобы проверять каждый ключ отдельно, так как у вас нет возможности напрямую запрашивать массив (я предполагаю, что массив также содержит полностью несвязанные ключи, но вы можете пропустить if
часть, если это не так):
foreach($array as $k => $v)
{
if (strpos($k, 'show_me_') !== false)
{
$number = substr($k, strrpos($k, '_'));
}
}
Однако это звучит как очень странный способ хранения данных, и если бы я был вами, я бы проверял, нет ли другого способа (более эффективного) передачи данных в вашем приложении;)
Ответ 4
Вы также можете использовать решение на основе preg_match
:
foreach($array as $str) {
if(preg_match('/^show_me_(\d+)$/',$str,$m)) {
echo "Array element ",$str," matched and number = ",$m[1],"\n";
}
}
Ответ 5
foreach($myarray as $key=>$value)
if(count(explode('show_me_',$event_key)) > 1){
//if array key contains show_me_
}
Дополнительная информация (пример):
если ключ массива содержит 'show_me_'
$example = explode ('show_me _', 'show_me_120');
print_r ($ пример)
Array ( [0] => [1] => 120 )
print_r (количество ($ пример))
2
print_r ($ пример [1])
120
Ответ 6
filter_array ($ array, function ($ var) {return (strpos ($ var, 'ищете_слово))! == FALSE);},);
возвращаемый массив 'search_key' => 'значение, назначенное ключу'