<?php
$bigArray = array(
array('John','2012-03-29',1),
array('Doe','2012-03-30',1),
array('John','2012-03-31',2),
array('Doe','2012-03-31',5),
array('Tom','2012-03-31',5),
array('John','2012-04-02',5),
array('John','2012-04-02',21),
array('John','2012-03-07',21)
);
$cache = array();
foreach ($bigArray as $v) {
if (isset($cache[$v[1]])) {
if ($cache[$v[1][1]] == $v[2]) {
echo "Equal";
$cache[$v[1]] = array($v[0].','.$cache[$v[1]][0], $v[2]);//append user to same value
}
else if ($cache[$v[1][1]] < $v[2]) {
echo "Replacing value! ".$cache[$v[1]][0]. " to " .$v[0]."<br/>";
$cache[$v[1]] = array($v[0], $v[2]);
}
} else {
$cache[$v[1]] = array($v[0], $v[2]);
}
}
print_r($cache);
?>
이 스크립트는 특정 날짜에 대해 가장 높은 가치를 발견하고는, false를 반환 가장 높은 값이 동일한 날짜에 동일한 경우 체크 새로운 배열 그러나 $cache
같은 배열 값이 같지 않습니까?
에 저장?
array(
array('Doe','2012-03-31',5),
array('Tom','2012-03-31',5),
)
위의 배열은 나를 혼란스럽게합니다. 일치로 간주되어서는 안됩니까?
출력은 : 너무 많은 세부 사항으로가는없이
Replacing value! John to Doe
Replacing value! Doe to Tom
Replacing value! John to John
Array
(
[2012-03-29] => Array
(
[0] => John
[1] => 1
)
[2012-03-30] => Array
(
[0] => Doe
[1] => 1
)
[2012-03-31] => Array
(
[0] => Tom
[1] => 5
)
[2012-04-02] => Array
(
[0] => John
[1] => 21
)
[2012-03-07] => Array
(
[0] => John
[1] => 21
)
)
+1은 1 분 너무 늦었습니다. –
와우 나는 그것을 볼 수 없다고 나는 믿을 수 없다. 정말 고맙습니다! – user521903
그리고 명시 적으로 이름이 지정된 키를 사용하는 연관 배열을 사용하면 훨씬 쉽게 작업 할 수 있습니다. :) – deceze