当前位置: 首页 > 知识库问答 >
问题:

PHP多维数组按值搜索

金谭三
2023-03-14

我有一个数组,我想在其中搜索uid,并获取数组的键。

假设我们有以下2维数组:

$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'
    )
);

函数调用search\u by\u uid(100)(第一个用户的uid)应返回0

函数调用search_by_uid(40489)应该返回2

我试着做循环,但我想要一个执行速度更快的代码。

共有3个答案

戚永福
2023-03-14

在PHP的后续版本中(

$key = array_search('100', array_column($userdb, 'uid'));
张权
2023-03-14

如果您使用的是(PHP5)

如果只需要一个结果:

$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

更新:我已经做了一些简单的基准测试,多结果表单似乎是最快的一个,甚至比Jakub自定义函数还要快!

阎慈
2023-03-14
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.

 类似资料:
  • 问题内容: 我有一个要在其中搜索并获取数组键的数组。 例子 假设我们有以下二维数组: 函数调用(第一个用户的uid)应返回。 函数调用应返回。 我尝试进行循环,但是我想要更快的执行代码。 问题答案: function searchForId($id, $array) { foreach ($array as $key => $val) { if ($val[‘uid’] === $id) { re

  • 问题内容: 我有这个多维数组。我需要搜索它,仅返回与“ slug”的值匹配的键。我知道还有其他有关搜索多维数组的线程,但是我对这些情况的理解还不够。非常感谢您的帮助! 所以我需要一个像这样的函数: 这是数组: 问题答案: 很简单:

  • 问题内容: 我有这个数组 现在,我想按此方法对数组进行排序 ? 目前,我在一个foreach循环中对此进行排序 必须有更好的方法 编辑 我希望输出类似 谢谢 问题答案: 您可以使用usort函数。

  • 问题内容: 我有一个这样的PHP数组: 因此,如何通过url_id 获取基于组的SUM(使用array_count_values) 问题答案: 为什么不更简单

  • 主要内容:实例,实例,三维数组,实例多维数组是包含一个或多个数组的数组。 在多维数组中,主数组中的每一个元素也可以是一个数组,子数组中的每一个元素也可以是一个数组。 一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组,依照这种方式,我们可以创建二维或者三维数组。 二维数组语法格式: 以上数组的元素会自动分配键值,从 0 开始: 实例 <?php // 二维数组: $cars = array ( array ( " Vol

  • 本文向大家介绍按PHP中的子值对php多维数组进行排序,包括了按PHP中的子值对php多维数组进行排序的使用技巧和注意事项,需要的朋友参考一下 'usort'函数可用于对PHP中的多维数组进行排序。它根据用户定义的条件对数组进行排序- 示例 输出结果 这将产生以下输出- 声明一个包含4个元素的数组,并将此数组传递给usort函数,并在元素上调用用户定义的“ my_sort”函数以确保排序以升序进行