Php 在某些阵列中查找类似的子阵列
有一些数组:Php 在某些阵列中查找类似的子阵列,php,arrays,algorithm,Php,Arrays,Algorithm,有一些数组: $a = array( 0 => array('value' => 1000, 'name' => 'AA1'), 1 => array('value' => 2000, 'name' => 'AA2'), 2 => array('value' => 3000, 'name' => 'AA3'), 3 => array('value' => 4000, 'name' => 'AA4'),
$a = array(
0 => array('value' => 1000, 'name' => 'AA1'),
1 => array('value' => 2000, 'name' => 'AA2'),
2 => array('value' => 3000, 'name' => 'AA3'),
3 => array('value' => 4000, 'name' => 'AA4'),
);
$b = array(
0 => array('value' => 1000, 'name' => 'BB1'),
1 => array('value' => 3000, 'name' => 'BB2'),
2 => array('value' => 1700, 'name' => 'BB3'),
3 => array('value' => 1200, 'name' => 'BB4'),
);
$c = array(
0 => array('value' => 3000, 'name' => 'CC1'),
1 => array('value' => 4000, 'name' => 'CC2'),
2 => array('value' => 4300, 'name' => 'CC3'),
3 => array('value' => 5000, 'name' => 'CC4'),
);
如何使用阵列$a、b和$c中的相同变体创建新阵列?并按“值”字段排序
$d = array(
0 => array('value' => 3000, 'name' => 'AA3');
);
真实示例:我不确定这是否是您想要的 结果是一个数组,其中包含给定数组中的所有重复值:
//Lets merge them into a big array to work in a easier way;
//It will be a single level array as follow: [a0] => 1000, [a1] => 2000 etc.
$array = array('a' => $a, 'b' => $b, 'c' =>$c);
foreach($array as $letter => $subArray){
foreach($subArray as $key => $values){
$newArray[$letter.$key] = $values['value'];
}
}
$uniques = array_unique($newArray); //getting the non-repeated values
$repeated = array_diff_assoc($newArray, $uniques); // stripping them out
$final = array_unique($repeated); //cleaning the repeated values to just 1 of each
print_r($final);
结果
Array
(
[b0] => 1000
[b1] => 3000
[c1] => 4000
)
结果数组:
array
(
'98' => array
(
'id_variant' => 98
'name' => 3 hour
'time' => 10800
)
'173' => array
(
'id_variant' => 173
'name' => 3 hour
'time' => 10800
)
'321' => array
(
'id_variant' => 321
'name' => 3 hour
'time' => 10800
)
)
我不明白你的输出标准是什么。你能更好地解释一下吗?需要找到所有具有类似“值”的子数组,如果该数组应该具有具有相同值的所有元素,你如何“排序”它们?不知道这就是为什么我要问:)只需要获得“d”-变量为什么数组
d
有一个字段名称具有值AA1
?标准是什么?这不是正确答案,因为我在数组$c中没有值“1000”,而在数组$b中不存在值“4000”。
array
(
'98' => array
(
'id_variant' => 98
'name' => 3 hour
'time' => 10800
)
'173' => array
(
'id_variant' => 173
'name' => 3 hour
'time' => 10800
)
'321' => array
(
'id_variant' => 321
'name' => 3 hour
'time' => 10800
)
)