Php 从数组中查找唯一值

Php 从数组中查找唯一值,php,arrays,match,magento2,Php,Arrays,Match,Magento2,我有一个多维数组,我需要找到数组是否具有相同的'brand'属性值,然后返回其id 我尝试通过一些数组函数,但没有成功。 我尝试的是: (一) 如果第一个数组的[name]=>品牌和[name]=>型号值与第二个数组的值相同,则返回[id],您可以使用foreach并在数组中迭代 $result =[]; foreach ($arr as $key => $value) { foreach($value as $v){ $result[$v['name']."|".

我有一个多维数组,我需要找到数组是否具有相同的'brand'属性值,然后返回其id

我尝试通过一些数组函数,但没有成功。
我尝试的是:

(一)


如果第一个数组的
[name]=>品牌
[name]=>型号
值与第二个数组的值相同,则返回
[id]
,您可以使用
foreach
并在数组中迭代

$result =[];
foreach ($arr as $key => $value) {
    foreach($value as $v){
        $result[$v['name']."|".$v['value']][] = $v['id'];      
    }
}
$result = array_map("array_unique", $result);
print_r($result);die;

如果要匹配索引
请尝试以下操作

循环需要两个

输出

编辑
然后您可以按名称和值对其进行分组


.

价值是指价格吗?(然后期望的输出是id 0?)我需要检查value=>54是否等于second array value=>89,然后返回其产品id@dWinderI抱歉,但我仍然不理解逻辑…出现了两个问题,1.
对于value 54,有两个产品id,您想要两个产品id吗?
2<代码>如果第一个数组的[name]=>品牌和[name]=>型号值与第二个数组的值相同,则返回[id]。。。。。你的问题是什么?你的片段不清楚too@himani一旦按照你的要求检查我的答案,它就不起作用了。我想将0个索引值与1个索引值进行匹配,但不起作用。@RakeshJakhar你清楚问题mate吗?@himani你提到过这个
,如果第一个数组的[name]=>品牌和[name]=>模型值与第二个数组的值相同,则返回[id]
,这意味着在每个数组中有2个子数组,并且希望匹配索引的ID与索引<代码>名称<代码> HimANI将返回空白,因为您有“代码> >名称< /代码>索引对于每个子数组不同,这意味着没有匹配。
$j = 1;
            $i = 0;
            foreach ($attributeValues as $attributeData) {
                foreach ($attribute as $value) {
                    if($value[$i]['value'] == $value[$j]['value']) {
                        echo '<pre>'; print_r($value); die(); 
                    }
                    $j++;
                }
            }
[0] => Array
    (
        [0] => Array
            (
                [name] => brand
                [value] => 54
                [id] => 5251
                [price] => 15000.0000
            )

        [1] => Array
            (
                [name] => model
                [value] => 1200
                [id] => 5251
                [price] => 15000.0000
            )

    )

[1] => Array
    (
        [0] => Array
            (
                [name] => brand
                [value] => 54
                [id] => 5250
                [price] => 15000.0000
            )

        [1] => Array
            (
                [name] => model
                [value] => 1200
                [id] => 5250
                [price] => 12000.0000
            )

    )
[2] => Array
    (
        [0] => Array
            (
                [name] => brand
                [value] => 89
                [id] => 518
                [price] => 100.0000
            )

        [1] => Array
            (
                [name] => model
                [value] => 12
                [id] => 518
                [price] => 100
            )
    )
$res = [];
foreach($arr as $k => $v){
  if($v[0]['name'] == $v[1]['name'])
    $res[$v[0]['name']] = $v[0]['id'];
}
foreach($arr as $k => $v){
  if($v[0]['value'] == $v[1]['value'])
    $res[] = $v[0]['id'];
}
$result =[];
foreach ($arr as $key => $value) {
    foreach($value as $v){
        $result[$v['name']][] = $v['id'];      
    }
}
$result = array_map("array_unique", $result); // to make it unique
print_r($result);
// if you want to check ids for brand
//print_r($result['brand']);

Array
(
    [brand] => Array
        (
            [0] => 5251
            [1] => 5250
            [3] => 518
        )

    [model] => Array
        (
            [0] => 5251
            [1] => 518
        )

)
$result =[];
foreach ($arr as $key => $value) {
    foreach($value as $v){
        $result[$v['name']."|".$v['value']][] = $v['id'];      
    }
}
$result = array_map("array_unique", $result);
print_r($result);die;