在嵌套的 php 数组中搜索值
Searching for value in nested php arrays
我有一个这样的数组,它可以有任意数量的 "domain" 数组。我在这个例子中删除了不必要的键。
Array
(
[result] => success
[clientid] => 7
[numreturned] => 2
[domains] => Array
(
[domain] => Array
(
[0] => Array
(
[domainname] => example.net
)
[1] => Array
(
[domainname] => example.com
)
)
)
)
我需要弄清楚如何检查这个数组以查看它是否包含域名。
我正在尝试做这样的事情:
if(arrayContains("example.com")){
$success = true;
}
我已经尝试了很多在 SO 上找到的解决方案,但它们似乎没有用。我发现的一个例子使用了 array_key_exists,这与我需要的有点相反。
关于如何做到这一点有什么建议吗?
尝试这样的事情:
$domains = $arr['domains'];
foreach($domains AS $domain)
{
foreach($domain AS $internal_arr)
{
if($internal_arr['domainname'] == 'example.net')
{
$success = true;
}
}
}
$array = array(
"result" => "success",
"clientid" => 7,
"numreturned" => 2,
"domains" => array(
"domain" => array(
0 => array(
"domainname" => "somedomain.com",
3 => array(
"domainname" => "searchdomanin.com",
),
),
1 => array(
"domainname" => "extwam",
),
)
)
);
$succes = FALSE;
$search = 'searchdomanin.com';
array_walk_recursive($array, function($key, $value) use(&$success, &$search){
if($key === $search){
$success = TRUE;
}
},
[&$key ,&$val]);
if($success){
echo 'FOUND';
}
适用于您拥有的任何维度数组。
使用这个功能来帮助你:
<?php
function recursive_array_search($needle,$haystack) {
foreach($haystack as $key=>$value) {
$current_key=$key;
if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
return $current_key;
}
}
return false;
}
?>
这是在 PHP 文档中关于 array_search()
的评论之一中找到的。
我有一个这样的数组,它可以有任意数量的 "domain" 数组。我在这个例子中删除了不必要的键。
Array
(
[result] => success
[clientid] => 7
[numreturned] => 2
[domains] => Array
(
[domain] => Array
(
[0] => Array
(
[domainname] => example.net
)
[1] => Array
(
[domainname] => example.com
)
)
)
)
我需要弄清楚如何检查这个数组以查看它是否包含域名。
我正在尝试做这样的事情:
if(arrayContains("example.com")){
$success = true;
}
我已经尝试了很多在 SO 上找到的解决方案,但它们似乎没有用。我发现的一个例子使用了 array_key_exists,这与我需要的有点相反。
关于如何做到这一点有什么建议吗?
尝试这样的事情:
$domains = $arr['domains'];
foreach($domains AS $domain)
{
foreach($domain AS $internal_arr)
{
if($internal_arr['domainname'] == 'example.net')
{
$success = true;
}
}
}
$array = array(
"result" => "success",
"clientid" => 7,
"numreturned" => 2,
"domains" => array(
"domain" => array(
0 => array(
"domainname" => "somedomain.com",
3 => array(
"domainname" => "searchdomanin.com",
),
),
1 => array(
"domainname" => "extwam",
),
)
)
);
$succes = FALSE;
$search = 'searchdomanin.com';
array_walk_recursive($array, function($key, $value) use(&$success, &$search){
if($key === $search){
$success = TRUE;
}
},
[&$key ,&$val]);
if($success){
echo 'FOUND';
}
适用于您拥有的任何维度数组。
使用这个功能来帮助你:
<?php
function recursive_array_search($needle,$haystack) {
foreach($haystack as $key=>$value) {
$current_key=$key;
if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
return $current_key;
}
}
return false;
}
?>
这是在 PHP 文档中关于 array_search()
的评论之一中找到的。