我有一个类似的数据结构:
Array(
[494] => Array(
[meta_key] => course_494_access_from
[expires_in] => 95
),
[498] => Array(
[meta_key] => course_498_access_from
[expires_in] => 122
),
[502] => Array(
[meta_key] => course_502_access_from
[expires_in] => 30
),
[506] => Array(
[meta_key] => course_506_access_from
[expires_in] => 365
)
)
我想问一下,如果有办法通过搜索course_502_access_from
来获取expires_in值
因此,在示例中,我想知道是否有一种方法可以在给定结构中执行数组搜索,方法是使用术语course_502_access_from
,然后获取与sub对应的值30
数组键expires_in
。
答案 0 :(得分:2)
我认为您可以在数组中循环并使用in_array()
函数来查找匹配值
foreach($array as $key => $data)
{
if(in_array("course_502_access_from",$data))
{
echo $array[$key]['expires_in'];
break;
}
}
工作样本here
答案 1 :(得分:2)
一般情况下,当多次出现搜索字符串('course_502_access_from'
)时,您可以将array_filter
与array_map
一起使用。
不知怎的,这样:
$result = array_map(
function ($v) {
return $v['expires_in'];
},
array_filter($array, function ($v) {
return $v['meta_key'] == 'course_502_access_from';
}
);
print_r($result);
答案 2 :(得分:1)
如果结构永远不会改变并保持这种状态,那么很简单,是的:
foreach($your_array as $a) {
if($a["meta_key"] === "course_502_access_from") {
return $a["expires_in"];
}
}
如果确实如此,你会得到多层......好吧,事情开始变得复杂起来。你可以创建一个函数并使用递归...但这需要的不仅仅是这5行代码。