比较 php 中的多维和单维数组

2024-01-07

我是 php 新手,只是在玩一些数组。 我想从数组中获取以下不同维度的内容

以下是多维数组

$a = array(
array(
    'productsid' => 90,
    'CouponID' => 50
),
array(
    'productsid' => 80,
    'CouponID' => 95
),
  array(
    'productsid' => 80,
    'CouponID' => 95
));

以下是一维数组:

$b = array(80,90,95);

我只想将数组的 productsid 索引与一维数组进行比较,并希望获取与其相等的数据。

我尝试了以下循环来打印,但它只给出了 productsid 的值,但我想要完整的数组。但只能通过将 Productid 与第二个数组进行比较。

for ($i = 0; $i < 3; $i++) {
foreach ($a[$i] as $key => $value) {
    foreach ($b as $c) {
        if ($value == $c) {
            echo $value .'<br>';

        }
    }
} }

看起来您正在寻找in_array() http://php.net/manual/en/function.in-array.php:

$result = array();
foreach($a as $item)
    if(in_array($item['productsid'], $b))
        $result []= $item;

或者,以更简洁(但在我看来可读性较差)的方式:

$result = array_filter($a, function($item) use($b) {
    return in_array($item['productsid'], $b);
});

对于您的测试数据来说,这并不重要,但是如果您的数组很大和/或这个循环将运行多次,您可以通过将查找数组转换为哈希表并使用来获得更好的性能O(1)键查找而不是线性数组搜索:

$bs = array_flip($b);
$result = array_filter($a, function($item) use($bs) {
    return isset($bs[$item['productsid']]);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较 php 中的多维和单维数组 的相关文章

随机推荐