我有一个数组,我想在其中搜索
并获取数组的密钥。
示例
假设我们有以下二维数组:
$userdb = array(
array(
'uid' => '100',
'name' => 'Sandra Shush',
'pic_square' => 'urlof100'
),
array(
'uid' => '5465',
'name' => 'Stefanie Mcmohn',
'pic_square' => 'urlof100'
),
array(
'uid' => '40489',
'name' => 'Michael',
'pic_square' => 'urlof40489'
)
);
函数调用
(第一个用户的uid)应返回
..。
函数调用
应该返回
..。
我试过编写循环,但我想要更快的代码执行速度。
发布于 2011-07-12 16:44:48
function searchForId($id, $array) {
foreach ($array as $key => $val) {
if ($val['uid'] === $id) {
return $key;
}
}
return null;
}
这将会起作用。你应该这样称呼它:
$id = searchForId('100', $userdb);
重要的是要知道,如果您正在使用
运算符比较的类型必须完全相同,在此示例中,您必须搜索
或者只是使用
取而代之的是
..。
基于
角度
回答。在PHP的更高版本中(
)您可以使用一行程序。
$key = array_search('100', array_column($userdb, 'uid'));
以下是文档:
http://php.net/manual/en/function.array-column.php
..。
发布于 2014-07-02 17:08:39
如果您使用的是(PHP5 >= 5.5.0),则不必编写自己的函数来执行此操作,只需编写以下代码即可完成此操作。
如果你只想要一个结果:
$key = array_search(40489, array_column($userdb, 'uid'));
对于多个结果
$keys = array_keys(array_column($userdb, 'uid'), 40489);
如果你有一个注释中指出的关联数组,你可以用:
$keys = array_keys(array_combine(array_keys($userdb), array_column($userdb, 'uid')),40489);
如果您使用的是PHP < 5.5.0,则可以使用
此后端口
,谢谢ramsey!
更新:我一直在做一些简单的基准测试,多个结果表单似乎是最快的,甚至比Jakub自定义函数还要快!
发布于 2017-06-14 16:59:54
在更高版本的>=(PHP5.5.0)中,您可以使用以下一行程序:
$key = array_search('100', array_column($userdb, 'uid'));
https://stackoverflow.com/questions/6661530
复制相似问题