Php 从数组中查找唯一值
我有一个多维数组,我需要找到数组是否具有相同的'brand'属性值,然后返回其id 我尝试通过一些数组函数,但没有成功。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']."|".
我尝试的是: (一)
如果第一个数组的
[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;