为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 多维数组搜索键

PHP 多维数组搜索键

PHP
繁华开满天机 2023-05-12 15:23:43
$list[7362][0]['value'] = 'apple';$list[7362][1]['value'] = 'orange';$list[9215][0]['value'] = 'lemon';我想要值“橙色”的键。我尝试使用 array_search 和 array_column,但显然我有问题 array_column。$key = array_search('orange', array_column($list, 'value'));如上所述PHP多维数组按值搜索但我的情况略有不同。密钥应返回 7362。
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

你可以尝试这样的事情:


<?php


$list = array();


$list[7362][0]['value'] = 'apple';

$list[7362][1]['value'] = 'orange';

$list[9215][0]['value'] = 'lemon';


foreach ($list as $keynum=>$keyarr) {

    foreach ($keyarr as $key=>$index) {

        if (array_search('orange', $index) !== false) {

            echo "orange found in $key >> $keynum";

        }   

    }   

}


?>

您可以选择只回显echo $keynum;您的目的。


遍历数组并找出找到的位置orange。


您可以将其重构为如下函数:


<?php


function getKeys($list, $text) {

    foreach ($list as $keynum=>$keyarr) { 

        foreach ($keyarr as $key=>$index) { 

            if (array_search($text, $index) !== false) {

                return "$text found in $key >> $keynum";

            }

        }

    }


    return "not found";

}


$list = array();


$list[7362][0]['value'] = 'apple';

$list[7362][1]['value'] = 'orange';

$list[9215][0]['value'] = 'lemon';


echo getKeys($list, 'lemon');


?>

echo getKeys($list, 'lemon');会给你lemon found in 0 >> 9215。


echo getKeys($list, 'orange');会给你orange found in 1 >> 7362。


echo getKeys($list, 'apple');会给你apple found in 0 >> 7362。


查看完整回答
反对 回复 2023-05-12
?
largeQ

TA贡献2039条经验 获得超7个赞

它array_column在该级别嵌套到很远,因此只需循环:


foreach($list as $k => $v) {

    if(in_array('orange', array_column($v, 'value'))) {

        $key = $k;

        break;

    }

}

如果可以有多个则创建一个数组并且不要break:


        $key[] = $k;

        //break;


查看完整回答
反对 回复 2023-05-12
  • 2 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信