2017-05-30 25 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、sha3、sha4する必要があります。そこに名前が二つ以上あるときは、より大きなサイズを保持する必要があります。

アソートを使って複数の配列に分割していましたが、これまで何もしていませんでした。

+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

偉大な、それは私のためにうまく動作し、あなたの迅速なヘルプの多くのおかげで! –