只是想知道你是否可以帮我解决这个问题:
我有一个多维数组......
$my_array = array(
0 => array(
"name" => "john",
"id" => 4
),
1 => array(
"name" => "mark",
"id" => 152
),
2 => array(
"name" => "Eduard",
"id" => 152
)
);
Run Code Online (Sandbox Code Playgroud)
想知道什么是最快和最有效的方法来检查数组$ my_array是否包含任何具有键"id"及其值152的值.我不需要回显或使用任何值.如果数组中有任何ID为"key"且值为"152"的记录,我只需要检查(返回true).
Dan*_*man 67
没有什么比简单的循环更快.您可以混合并匹配一些数组函数来完成它,但它们也只是作为循环实现.
function whatever($array, $key, $val) {
foreach ($array as $item)
if (isset($item[$key]) && $item[$key] == $val)
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
Fri*_*ode 23
这是Dan Grossman的答案的更新版本,它将满足多维数组(我之前的目标):
function find_key_value($array, $key, $val)
{
foreach ($array as $item)
{
if (is_array($item) && find_key_value($item, $key, $val)) return true;
if (isset($item[$key]) && $item[$key] == $val) return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
Jaz*_*zer 22
最简单的方法是这样的:
$my_array = array(
0 => array(
"name" => "john",
"id" => 4
),
1 => array(
"name" => "mark",
"id" => 152
),
2 => array(
"name" => "Eduard",
"id" => 152
)
);
if (array_search(152, array_column($my_array, 'id')) !== FALSE) {
echo 'FOUND!';
} else {
echo 'NOT FOUND!';
}
Run Code Online (Sandbox Code Playgroud)
小智 13
**PHP> = 5.5
只是你可以使用它
$key = array_search(40489, array_column($userdb, 'uid'));
Run Code Online (Sandbox Code Playgroud)
让我们假设这个多维数组:
$userdb=Array
(
(0) => Array
(
(uid) => '100',
(name) => 'Sandra Shush',
(url) => 'urlof100'
),
(1) => Array
(
(uid) => '5465',
(name) => 'Stefanie Mcmohn',
(pic_square) => 'urlof100'
),
(2) => Array
(
(uid) => '40489',
(name) => 'Michael',
(pic_square) => 'urlof40489'
)
);
$key = array_search(40489, array_column($userdb, 'uid'));
Run Code Online (Sandbox Code Playgroud)
如果你必须进行大量的"id"查找并且它应该非常快,你应该使用包含所有"id"的第二个数组作为键:
$lookup_array=array();
foreach($my_array as $arr){
$lookup_array[$arr['id']]=1;
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以非常快速地检查现有ID,例如:
echo (isset($lookup_array[152]))?'yes':'no';
Run Code Online (Sandbox Code Playgroud)
一个好的解决方案可以@Elias Van Ootegan在评论中提供,即:
$ids = array_column($array, 'id', 'id');
echo isset($ids[40489])?"Exist":"Not Exist";
Run Code Online (Sandbox Code Playgroud)
我试过了并为我工作,谢谢伙计。
已编辑
注意:它适用于 PHP 5.5+
| 归档时间: |
|
| 查看次数: |
105248 次 |
| 最近记录: |