我试图在多维数组中搜索一个值(下面只是大数组的一部分)并获取该值的密钥,但我无法自己管理它。这是我尝试过的:
Array
(
[0] => Array
(
[0] => SMEG - 30
[1] => ALES
[2] => -
[3] => -
[4] => -
[5] => ALES
[6] => 44-
[7] => -
[8] => FR*S30*E36*1*1
[9] => FR*S30*E36*1*1
[10] => US*S30
[11] => Oui
[12] => 3376
[13] => Normale
[14] => -
)
[1] => Array // <-- wanted key
(
[0] => SMEG - 30
[1] => ALES
[2] => -
[3] => Chemin Des Sports
[4] => -
[5] => ALES
[6] => -
[7] => -
[8] => FR*S30*E37*2*1 // <-- wanted value
[9] => FR*S30*E37*2*1
[10] => FR*S30
[11] => Oui
[12] => 33762
[13] => Normale
[14] => -
)
[2] => Array
(
[0] => SMEG - 30
[1] => ALES
[2] => 0
[3] => Ecole Des Mines
[4] => -
[5] => ALES
[6] => 4-
[7] => -
[8] => FR*S30*E38*2*1
[9] => FR*S30*E38*2*1
[10] => FR*S30
[11] => Oui
[12] => 3376
[13] => Normale
[14] => -
)
)
$key = array_search("FR*S30*E37*2*1", array_column($data, '8'));
var_dump($data[$key]);
使用此代码我无法获得所需数组的密钥。我究竟做错了什么 ?
如果你不需要密钥,你可以使用array_filter
$result = array_filter($data, function($item) use ($search) {
return $item[8] == $search;
})[0];
如果您需要密钥,可以这样修改
$key = false;
$result = array_filter($data, function($item, $k) use ($search, &$key) {
if ($item[8] == $search) {
$key = $k;
return true;
}
return false;
}, ARRAY_FILTER_USE_BOTH)[0];
要处理未找到结果的情况,您必须跳过[0]
聚会并测试是否count($result) != 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)