foreach($myarray as $key=>$value){
if("show_me_" == substr($key,0,8)){
$number = substr($key,strrpos($key,'_'));
// do whatever you need to with $number...
}
}
// the array you'll search in
$array = ["search_1"=>"value1","search_2"=>"value2","not_search"=>"value3"];
// filter the array and assign the returned array to variable
$foo = array_filter(
// the array you wanna search in
$array,
// callback function to search for certain sting
function ($key){
return(strpos($key,'search_') !== false);
},
// flag to let the array_filter(); know that you deal with array keys
ARRAY_FILTER_USE_KEY
);
// print out the returned array
print_r($foo);
字符串 如果在数组中搜索值,可以使用标志0或将标志留空
$foo = array_filter(
// the array you wanna search in
$array,
// callback function to search for certain sting
function ($value){
return(strpos($value,'value') !== false);
},
// flag to let the array_filter(); know that you deal with array value
0
);
型 或
$foo = array_filter(
// the array you wanna search in
$array,
// callback function to search for certain sting
function ($value){
return(strpos($value,'value') !== false);
}
);
型 如果在数组值和数组键中搜索,可以使用标志ARRAY_FILTER_USE_BOTH
$foo = array_filter(
// the array you wanna search in
$array,
// callback function to search for certain sting
function ($value, $key){
return(strpos($key,'search_') !== false or strpos($value,'value') !== false);
},
ARRAY_FILTER_USE_BOTH
);
8条答案
按热度按时间qlfbtfca1#
我能想到的一个解决办法是:
字符串
tkqqtvp12#
您可以将整个数组的键隔离为一个新数组,然后使用正则表达式过滤整个新数组,只保留以
show_me_
开头的值,然后访问第一个合格键持有的原始数组值。字符串
5cnsuln73#
你必须遍历你的数组来分别检查每个键,因为你不可能直接查询数组(我假设数组也包含完全不相关的键,但如果不是这样,你可以跳过
if
部分):字符串
然而,这听起来像是一种非常奇怪的存储数据的方式,如果我是你,我会检查是否有其他方法(更有效)在应用程序中传递数据;)
lf5gs5x24#
要在数组键中搜索特定字符串,可以使用
array_filter();
see docs字符串
如果在数组中搜索值,可以使用标志0或将标志留空
型
或
型
如果在数组值和数组键中搜索,可以使用标志ARRAY_FILTER_USE_BOTH
型
如果你要同时搜索这两个,你必须向回调函数传递2个参数
rkkpypqq5#
您也可以使用基于
preg_match
的解决方案:字符串
gcuhipw96#
只需要在一个循环中调用
sscanf()
(而不是两个或三个函数调用),就可以证明找到了限定键并提取数字后缀。甚至可以通过在格式参数中使用%d
将数字后缀转换为整数。当找到所寻找的键时,中断循环,因为不再有点搜索了。其他使用
array_filter()
、preg_grep()
或未中断的foreach()
的脚本将不必要地、次优地遍历整个数组--即使在遇到所寻找的键之后。产品编号:(Demo)
字符串
kulphzqa7#
字符串
更多信息(示例):
如果数组键包含“show_me_”
$example = explode('show_me_',' show_me_120');
print_r($example)
型
print_r(count($example))
型
print_r($example[1])
型
0dxa2lsx8#
字符串