2015-04-29 28 views
0

我有一個這樣的數組:Array中相同的PHP

Array 
(
    [0] => Array 
     (
      [fileid] => 7 
      [remarks] => 
      [filename] => whomovedmycheese - Copy.pdf 
      [type] => application/pdf 
      [size] => 500624 
     ) 

    [1] => Array 
     (
      [fileid] => 7 
      [remarks] => 
      [filename] => whomovedmycheese.pdf 
      [type] => application/pdf 
      [size] => 500624 
     ) 

    [2] => Array 
     (
      [fileid] => 8 
      [remarks] => 
      [filename] => whomovedmycheese - Copy.pdf 
      [type] => application/pdf 
      [size] => 500624 
     ) 

    [3] => Array 
     (
      [fileid] => 8 
      [remarks] => 
      [filename] => whomovedmycheese.pdf 
      [type] => application/pdf 
      [size] => 500624 
     ) 

) 

這是我的陣列我想刪除重複的。我試圖刪除使用下面的代碼重複。

$input4 = array_map("unserialize", array_unique(array_map("serialize", $basicinfo3))); 
$new_data3 = array_values($input4); 

但是結果仍然與起始數組相同。在上面的代碼$basicinfo具有上述數組的值。我想要做的是刪除重複的數組,所以它將如下所示。

Array 
    (
     [0] => Array 
      (
       [fileid] => 7 
       [remarks] => 
       [filename] => whomovedmycheese - Copy.pdf 
       [type] => application/pdf 
       [size] => 500624 
      ) 

     [1] => Array 
      (
       [fileid] => 7 
       [remarks] => 
       [filename] => whomovedmycheese.pdf 
       [type] => application/pdf 
       [size] => 500624 
      ) 
    ) 

UPDATE

Array 
(
    [008-408-601-000-0] => Array 
     (
      [id] => 008-408-601-000 
      [lastname] => Smith 
      [firstname] => John 
      [email] => [email protected] 
      [Address] => Array 
       (
        [0] => Array 
         (
          [Language] => C++ 
         ) 

        [1] => Array 
         (
          [Language] => C++ 
         ) 

        [2] => Array 
         (
          [Language] => C++ 
         ) 

        [3] => Array 
         (
          [Language] => Java 
         ) 

        [4] => Array 
         (
          [Language] => Java 
         ) 

        [5] => Array 
         (
          [Language] => Java 
         ) 

       ) 

     ) 

    [002-408-641-000-0] => Array 
     (
      [id] => 008-408-601-000 
      [lastname] => Smith 
      [firstname] => Jack 
      [email] => [email protected] 
      [Address] => Array 
       (
        [0] => Array 
         (
          [Language] => C++ 
         ) 

        [1] => Array 
         (
          [Language] => C++ 
         ) 

        [2] => Array 
         (
          [Language] => C++ 
         ) 

        [3] => Array 
         (
          [Language] => Java 
         ) 

        [4] => Array 
         (
          [Language] => Java 
         ) 

        [5] => Array 
         (
          [Language] => Java 
         ) 

       ) 

     ) 

    [001-002-003-000-0] => Array 
     (
      [id] => 008-408-601-000 
      [lastname] => Smith 
      [firstname] => Jean 
      [email] => [email protected] 
      [Address] => Array 
       (
        [0] => Array 
         (
          [Language] => C++ 
         ) 

        [1] => Array 
         (
          [Language] => C++ 
         ) 

        [2] => Array 
         (
          [Language] => C++ 
         ) 

        [3] => Array 
         (
          [Language] => Java 
         ) 

        [4] => Array 
         (
          [Language] => Java 
         ) 

        [5] => Array 
         (
          [Language] => Java 
         ) 

       ) 

     ) 







) 
+1

你的問題不清楚,能否請您用例子來解釋? – Prakash

回答

1

不能使用以上,因爲這考慮到了獨特的全陣列批,因爲你已經可以看到該功能,一些fileid已經不同與相同的文件名。如果您需要基於filename,那麼正常的循環就足夠了。

在您的示例輸出中,似乎首先發現的是優先級,然後簡單的isset應該沒問題。

$input4 = array(); 
foreach($basicinfo3 as $values) { 
    if(!isset($input4[$values['filename']])) { 
     $input4[$values['filename']] = $values; // if doesn't exist yet, push it 
    } 
} 

$input4 = array_values($input4); // simple reindex 

Sample Output

+0

只是一個問題,我想在fileid上的建議是數據庫中的條目的id增量id是比文件名檢查更好的參數? –

+0

@HogRider好吧,我知道的大多數操作系統都不允許重複的文件名,所以是的,你需要使用文件名而不是遞增的ID – Ghost

+0

什麼是操作系統抱歉還沒有遇到該術語 –

0

您可以使用普通的PHP數組來實現這一目標。

<?php 
$data = Array 
(
    0 => Array 
     (
      "fileid" => 7, 
      "remarks" => '', 
      "filename" => "whomovedmycheese - Copy.pdf", 
      "type" => "application/pdf", 
      "size" => "500624", 
     ), 

    1 => Array 
     (
      "fileid"=> 7, 
      "remarks" => '', 
      "filename"=> "whomovedmycheese.pdf", 
      "type"=> "application/pdf", 
      "size" => "500624", 
     ), 

    2 => Array 
     (
      "fileid"=> 8, 
      "remarks"=> '', 
      "filename"=> "whomovedmycheese - Copy.pdf", 
      "type"=> "application/pdf", 
      "size" => "500624", 
     ), 

    3 => Array 
     (
      "fileid"=> 8, 
      "remarks"=> '', 
      "filename"=> "whomovedmycheese.pdf", 
      "type"=> "application/pdf", 
      "size" => "500624", 
     ) 
); 

$newArray = array(); 
foreach ($data as $file) 
{ 
    $newArray[$file['filename']] = $file; 
} 
echo "<pre>"; 
print_r($newArray); 
?>