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() 函数可以大大提高代码的效率。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值