PHP在多维数组中搜索关键字

PHP在多维数组中搜索关键字,php,arrays,search,multidimensional-array,Php,Arrays,Search,Multidimensional Array,我有这个: Array ( [carx] => Array ( [no] => 63 ) [cary] => Array ( [no] => 64 ) ) 当我的号码为63时,如何找到钥匙卡?我知道怎么用,但这个有点棘手。比如我可以找到key nameid,而我有63,但是这个有点棘手 有人能帮我吗?所以你没有你第一级的id密钥

我有这个:

Array
(
    [carx] => Array
        (
            [no] => 63

        )

    [cary] => Array
           (
           [no] => 64

           )
)
当我的号码为63时,如何找到钥匙卡?我知道怎么用,但这个有点棘手。比如我可以找到key name
id
,而我有
63
,但是这个有点棘手


有人能帮我吗?

所以你没有你第一级的id密钥,所以循环通过,当你发现匹配时,停止循环并跳出foreach

foreach ($array as $i => $v) $array[$i] = $v['no'];
$key = array_search(63, $array);
$id = 0;
$needle = 63;
foreach($array as $i => $v)
{
    if ($v['no'] == $needle)
    {
        $id = $i;
        break 1;
    }
}
// do what like with any other nested parts now
print_r($array[$id]);

然后可以使用该键获取整个嵌套数组。

这有什么用吗?我使用它对数组和对象进行常规搜索。注:未进行速度/压力测试。请随意指出任何明显的问题

function arrayKeySearch(array $haystack, string $search_key, &$output_value, int $occurence = 1){
    $result             = false;
    $search_occurences  = 0;
    $output_value       = null;
    if($occurence < 1){ $occurence = 1; }
    foreach($haystack as $key => $value){
        if($key == $search_key){
            $search_occurences++;
            if($search_occurences == $occurence){
                $result         = true;
                $output_value = $value;
                break;
            }
        }else if(is_array($value) || is_object($value)){
            if(is_object($value)){
                $value = (array)$value;
            }
            $result = arrayKeySearch($value, $search_key, $output_value, $occurence);
            if($result){
                break;
            }
        }
    }
    return $result;
}
函数arrayKeySearch(数组$haystack,字符串$search_key,&$output_value,int$occurrence=1){
$result=false;
$search\u occurrences=0;
$output_value=null;
如果($occurrence<1){$occurrence=1;}
foreach($key=>$value的haystack){
如果($key==$search\u key){
$search_occurrences++;
如果($search\u occurrence==$occurrence){
$result=true;
$output_value=$value;
打破
}
}else if(is_数组($value)| is_对象($value)){
如果(是对象($value)){
$value=(数组)$value;
}
$result=arrayKeySearch($value、$search\u key、$output\u value、$occurrence);
如果($结果){
打破
}
}
}
返回$result;
}