2015-10-10 27 views
-1

從數組中查找數據。來自多維數組的填充數據

Array 
(

    [0] => Array 
     (
      [id] => 2000 
      [rating] => 5 
      [length] => 89 
     ) 

    [1] => Array 
     (
      [id] => 2000 
      [rating] => 5 
      [length] => 80 
    ) 

    [2] => Array 
     (
      [id] => 2000 
      [rating] => 1 
      [length] => 105 
     ) 
    [3] => Array 
     (
      [id] => 2000 
      [rating] => 5 
      [length] => 90 
    ) 

    [4] => Array 
     (
      [id] => 2001 
      [rating] => 4 
      [length] => 55 
    ) 
    [5] => Array 
     (
      [id] => 2001 
      [rating] => 3 
      [length] => 55 
    ) 
) 

要求的條件,如果ID是一樣的:

  1. 取得具有最高評價記錄。
  2. 如果評級是在陣列相同,則獲得長度(最大長度)結果的基礎

所需的輸出:

array(
    [3] => Array 
    (
     [0] => 2000 
     [1] => 5 
     [2] => 90 
    ) 
    [4] => Array 
    (
     [id] => 2001 
     [rating] => 4 
     [length] => 55 
) 
) 
+2

顯示當前碼。 SO不是免費的寫作服務。 – Rizier123

回答

1

你可以使用usort簡單foreach環等作爲

usort($arr,function($a,$b){ 
    $c = $b['rating'] - $a['rating']; 
    $c .= $b['length'] - $a['length']; 
    return $c; 
}); 
$result = []; 
foreach($arr as $key => $value){ 
    if(!isset($result[$value['id']])){ 
     $result[$value['id']] = $value; 
    } 
} 
print_r(array_values($result)); 
0

(我thinck你應該重新制定你的問題,這是非常混亂的。 ..)

也許你可以減少使用foreach()如果你必須排序。

//$max = 0; 
foreach($arrayWithSameIds as $key => $element){ 

    if($element['rating'] > $max){ 
    //$max = $element; 
    }else if($element['rating'] == $max){ 
    //compare $max['length'] and $element['length'] 
    }else{ 

    } 

}

我不舒爾你正在尋找...