I의 구조 만 값이 같은 다른 정확히 같은 두 개의 어레이가 ..두 개의 다차원 배열 중에서 가장 높은 수를 얻으려면 어떻게해야합니까?
// $array1
Array
(
[Backlight] => Array
(
[Supply_Type] => Backlight
[Value] => 100.00
[Count] => 2
)
[Body Glass] => Array
(
[Supply_Type] => Body Glass
[Value] => 100.00
[Count] => 82
)
)
// $array2
Array
(
[Backlight] => Array
(
[Supply_Type] => Backlight
[Value] => 200.00
[Count] => 1
)
[Body Glass] => Array
(
[Supply_Type] => Body Glass
[Value] => 150.00
[Count] => 90
)
)
목표 "개수", "값"중 가장 높은 값에서 모두 하나 개의 어레이를 생성한다 각 유형별 (Body Glass, Backlight).
그래서은 다음과 같아야합니다 ...
// $finalArray
Array
(
[Backlight] => Array
(
[Supply_Type] => Backlight
[Value] => 200.00
[Count] => 2
)
[Body Glass] => Array
(
[Supply_Type] => Body Glass
[Value] => 150.00
[Count] => 90
)
)
내가 array_uintersect이 작업을 수행하지만, 지금까지 내가 알고 있어요으로 시행 착오를 통해 할 수 생각 두 개 이상의 배열이있을 수 있습니다으로 , 이것은 한 배열의 값만 반환하고 나머지는 비교합니다. 그리고 잘못된 경로로 내려갈 수도 있습니다.
나는 이것을 추가 할 것이라고 생각했습니다. array_reduce를 사용하여, 나는 배열에 두 개의 값 ("값"과 "수")에서 값을 추가 할 필요로 할 때
이 문제는 ... 난 그냥 쓰고 싶다 이상적으로 시작
$sum = array_reduce($array, function ($a, $b) use($key) {
isset($a[$b[$key]]) ? $a[$b[$key]]["Value"] += $b["Value"] : $a[$b[$key]] = $b;
isset($a[$b[$key]]) ? $a[$b[$key]]["Count"] += $b["Count"] : $a[$b[$key]] = $b;
return $a;
});
하지만 두 번째 할당이 올바르게 추가되지 않았습니다. 제대로 기억한다면 첫 번째 배열 값을 두 번 더 추가했습니다.
그래서 ... 두 개 이상의 배열을 생성하는이에 대한
foreach($values as $value) {
$sum[] = array_reduce($array, function ($a, $b) use($key, $value) {
isset($a[$b[$key]]) ? $a[$b[$key]][$value] += $b[$value] : $a[$b[$key]] = $b;
return $a;
});
}
정착 그리고이 현재의 문제에 저를 제공합니다.
데이터베이스를 사용하고 있습니까? 그렇다면 거기에 그것을한다면, 그렇지 않다면 당신은 데이터베이스를 사용해야합니다. –
그냥 배열에 루프를 사용하고 다른 것들과 비교하기 전에 differents 값을 잡아서 최대 결과 배열을 만드십시오. – YaatSuka
"Backlight"와 "Body Glass"속성을 가진 연관 배열이 가득 찬 배열을 가지고 있다는 것을 정말로 말하고 싶습니까? 아니면 개별 배열을 가지고 있습니까? – PHPglue