php 二维数组 找某个数据
在 PHP 中找到二维数组中特定的元素,最常见的方法是使用循环和条件语句进行遍历,直到找到所需的元素。也可以使用 PHP 内置的函数如 array_search()
或 array_column()
,它们可以在特定条件下帮助我们在二维数组中查找某个数据或所需的元素。
以下是使用循环查找一个二维数组中特定元素的例子:
$people = array( array('id' => 1, 'name' => 'John'), array('id' => 2, 'name' => 'Jane'), array('id' => 3, 'name' => 'Bob'));$person_id = 2;$found_person = null;foreach ($people as $person) { if ($person['id'] == $person_id) { $found_person = $person; break; }}if ($found_person) { echo "Person found: " . $found_person['name'];} else { echo "Person not found!";}
输出结果为:
Person found: Jane
这个例子中,我们遍历了 $people
数组中的每一个元素,并在每个元素上检查 id
属性是否与所需的 $person_id
相同。如果它们是相同的,我们将该元素存储在 $found_person
变量中,然后退出循环。
如果找到了所需的元素,则输出该元素的 name
属性。否则,输出一条未找到该元素的消息。
需要注意的是,如果二维数组非常大,循环遍历所有元素可能会比较耗时。因此,在此类情况下,可以考虑使用 array_search()
或 array_column()
等 PHP 内置函数进行查找。
array_search()
函数是 PHP 内置函数之一,可以在数组中根据值查找键。这个函数的语法如下:
array_search( mixed $needle, array $haystack, bool $strict = false ): mixed
其中:
$needle
:需要查找的值。$haystack
:在其中查找$needle
的数组。$strict
:如果该参数为true
,则在比较值时使用类型(=)比较。否则,使用值()比较。
函数返回查找到的键名。如果未找到该值,则返回 false
。
以下是使用 array_search()
查找一个二维数组中特定元素的例子:
$people = array( array('id' => 1, 'name' => 'John'), array('id' => 2, 'name' => 'Jane'), array('id' => 3, 'name' => 'Bob'));$person_id = 2;$key = array_search($person_id, array_column($people, 'id'));if ($key !== false) { $found_person = $people[$key]; echo "Person found: " . $found_person['name'];} else { echo "Person not found!";}
输出结果为:
Person found: Jane
这个例子中,我们使用了 array_search()
函数和 array_column()
函数来查找 $person_id
是否存在于 $people
数组中。首先,我们使用 array_column($people, 'id')
函数来获取一个只包含 id
属性的一维数组。然后,我们在这个一维数组上使用 array_search($person_id, ...)
函数来查找 $person_id
的键名。
如果找到了 $person_id
,则将其键名存储在 $key
变量中。然后,我们可以通过这个 $key
来访问原始的 $people
数组中的元素。如果找到了所需的元素,则输出该元素的 name
属性。否则,输出一条未找到该元素的消息。
需要注意的是,使用 array_search()
函数查找键比使用循环遍历数组的方法快得多。因此,对于大型的二维数组,使用 array_search()
函数可以大大提高代码的效率。
来源地址:https://blog.csdn.net/qq_27487739/article/details/130641825
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341