在 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中文网其他相关文章!