2017-05-30 44 views
0

我有一个多维数组看起来像这样:PHP,保持最高值出多维数组

Array 
(
    [0] => Array 
     (
      [name] => name1 
      [sha1] => sha1 
      [size] => 693989968 
     ) 

    [1] => Array 
     (
      [name] => name1 
      [sha1] => sha2 
      [size] => 757204238 
     ) 

    [2] => Array 
     (
      [name] => name2 
      [sha1] => sha3 
      [size] => 1068277922 
     ) 

    [3] => Array 
     (
      [name] => name3 
      [sha1] => sha4 
      [size] => 996843467 
     ) 

想要的函数的返回应该是SHA2,沙三段,SHA4;当名称不止一次出现时,应该保留更高的大小。

我尝试了几个小时,使用asort,分裂成多个数组(名称,沙和大小),但没有任何工作到现在。

+0

排序阵列按大小。然后遍历数组,删除任何重复的名称。 – Barmar

回答

0
$output_array=array(); 
$a = array(
array(
    "name" => "name1", 
    "sha1" => "sha1", 
    "size" => 693989968 
), 
array(
    "name" => "name1", 
    "sha1" => "sha2", 
    "size" => 757204238 
), 
array(
    "name" => "name2", 
    "sha1" => "sha3", 
    "size" => 1068277922 
), 
array(
    "name" => "name3", 
    "sha1" => "sha4", 
    "size" => 996843467 
) 
); 
foreach($a as $item){ 
    //item to check 
    $item_tc = @$output_array[$item['name']]; //names with empty string will be discarded 
    //by using @ to suppress errors. 
    if($item_tc){ 
     print($item['size'].'n'); 
     print($item_tc['size']); 
     if($item['size'] > $item_tc['size']){ 
      $output_array[$item['name']] = $item; 
       //print_r($item); 

     } 
    }else{ 
     $output_array[$item['name']] = $item; 
    } 
} 
print_r($output_array); 

的输出是:

Array (
    [name1] => Array ( 
    [name] => name1 
    [sha1] => sha2 
    [size] => 757204238 
    ) 
    [name2] => Array (
    [name] => name2 
    [sha1] => sha3 
    [size] => 1068277922 
) 
    [name3] => Array ( 
    [name] => name3 
    [sha1] => sha4 
    [size] => 996843467 
) 
) 
+0

太棒了,这对我来说很好,非常感谢您的快速帮助! –