php数组:如果键值相同,则按其他键值选择最高值


$myArray = [
"ID" => "",
"Module" => "",
"Version"=> ""
];
Output:
[
{23,finance,1.0},
{24,finance,1.1},
{25,logistic,1.0}
]

我有一个数组,上面有给定的键。我需要一个新的数组,给我最高版本的IF模块是一样的。我该怎么做?

desired Output:
[
{24,finance,1.1},
{25,logistic,1.0}
]

这就是我尝试的

$modulesFiltered = [];
$i = 0;
$j = 0;
foreach($modules as $module){
$modulesFiltered[$i]['ID'] = $module['ID'];
foreach($modulesFiltered as $moduleF){
if(!empty($moduleF[$j]['Module'])){
if($module[$i]['Module'] == $moduleF[$j]['Module']){
$modulesFiltered[$i]['Module'] = 'this is doubled';
}
} else {
$modulesFiltered[$i]['Module'] = $module['Module'];
}
$j++;
}
$modulesFiltered[$i]['Module'] = $module['Module'];
$i++;
}

我试着调试你的代码。问题是您试图访问$moduleF的元素[0]。您应该将$moduleF[$j]['Module']更改为$moduleF['Module']。

尽可能使用标准功能。要在(多维(数组中查找值,可以使用arraysearch。下面的代码有效。

也不要将字符串与==进行比较,使用strcmp(str1,str2(==0代替

$inputArray = array(
array(
"ID" => 23,
"Module" => "finance",
"Version"=> 1.0),
array(
"ID" => 24,
"Module" => "finance",
"Version"=> 1.1),
array(
"ID" => 25,
"Module" => "logistiscs",
"Version"=> 1.0));

$output = array();

foreach($inputArray as $element)
{
$key = array_search($element["Module"], array_column($output, "Module"));

if(is_numeric($key))
$output[$key]["Version"] = max($element["Version"], $output[$key]["Version"]);

else
$output[] = $element;

}
print_r($output);

最新更新