首页 > 后端开发 > PHP问题 > php 查询二维数组里返回

php 查询二维数组里返回

WBOY
发布: 2023-05-06 15:57:08
原创
583 人浏览过

在 PHP 中,我们可以使用多种方式来查询数组里的元素,例如使用 in_array() 函数,使用 array_search() 函数等。但当我们需要在一个二维数组中查询元素时,这些方法就显得不太有效了。本文将介绍如何在 PHP 中查询二维数组并返回需要的元素。

首先,让我们来看一个简单的二维数组:

$students = array(
    array('name' => 'Tom', 'age' => 20, 'score' => 90),
    array('name' => 'Jack', 'age' => 22, 'score' => 85),
    array('name' => 'Mary', 'age' => 21, 'score' => 92),
);
登录后复制

假设我们想要查询某个学生的成绩,我们可以使用 foreach 循环遍历数组,并使用条件语句来判断是否是我们需要的学生,例如:

$wantedStudent = 'Jack';

foreach ($students as $student) {
    if ($student['name'] == $wantedStudent) {
        echo $wantedStudent . '的成绩是:' . $student['score'];
        break;
    }
}
登录后复制

以上代码将输出:

Jack的成绩是:85
登录后复制

但是,如果我们需要查询的学生很多,这种方法将变得非常繁琐。因此,我们可以将其封装成一个函数来使用:

function searchArray($array, $key, $value) {
    foreach ($array as $item) {
        if ($item[$key] == $value) {
            return $item;
        }
    }
    return null;
}
登录后复制

以上函数接收三个参数:数组,要查询的键名和键值。它将遍历数组,如果找到匹配项,就返回该项,否则返回 null。

我们可以像这样使用该函数:

$wantedStudent = 'Mary';
$student = searchArray($students, 'name', $wantedStudent);

if ($student) {
    echo $wantedStudent . '的成绩是:' . $student['score'];
}
登录后复制

以上代码和之前的例子是等效的,将输出:

Mary的成绩是:92
登录后复制

但是,当数组非常大时,遍历整个数组将影响性能。因此,我们可以使用数组函数 array_filter(),该函数可以接收一个数组和一个回调函数,并返回一个新数组,其中包含符合回调函数条件的数组元素。

以下是使用 array_filter() 来查询二维数组的示例:

function searchArray($array, $key, $value) {
    $filtered = array_filter($array, function($item) use ($key, $value) {
        return $item[$key] == $value;
    });
    return count($filtered) ? array_values($filtered)[0] : null;
}
登录后复制

以上函数和之前的函数的功能是一样的,但是它使用了 array_filter() 来过滤符合条件的数组元素,从而提高了性能。

至此,我们已经学会了在 PHP 中查询二维数组并返回需要的元素的方法。建议在上百条甚至更多数据的情况下使用 array_filter() 和匿名函数的方式实现数组元素查询。

以上是php 查询二维数组里返回的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板