2016-07-22 4 views
0

重複した配列を削除するにはどうすればいいですか? この例では、バーコードは重複値111です。重複が検出された場合は削除します。 PLeaseの助けを借りて、PHPに新しい機能を追加しましょう。おかげ重複した多次元配列を見つけて配列phpから削除

出力:

Array 
(
[0] => Array 
    (
     [Barcode] => 111 
     [Transaction_No] => 256 
    ) 

[1] => Array 
    (
     [Barcode] => 111 
     [Transaction_No] => 0 
    ) 

[2] => Array 
    (
     [Barcode] => 222 
     [Transaction_No] => 0 
    ) 

) 

予想される出力:

Array 
(
[0] => Array 
    (
     [Barcode] => 222 
     [Transaction_No] => 0 
    ) 

) 
+0

? –

+0

私がしたいのは、この配列2の配列を削除することです。実際にその動的な意味バーコードの重複がすべての重複を削除した場合 – coolshox

+0

あなたは、同じバーコード値の配列を削除したいのですか? –

答えて

1

これは見つけるために、各バーコードの配列項目のキーを追跡します最後にarray_valuesを使用して配列のインデックス付けを修正します。

<?php 
$myArray = array(
    array 
    (
     "Barcode" => 111, 
     "Transaction_No" => 256 
    ), 
    array 
    (
     "Barcode" => 111, 
     "Transaction_No" => 0 
    ), 
    array 
    (
     "Barcode" => 222, 
     "Transaction_No" => 0 
    ) 
); 

$barcodeKeys = array(); 
foreach ($myArray as $key => $arr) { 
    $code = $arr["Barcode"]; 
    if (!isset($barcodeKeys[$code])) { 
     $barcodeKeys[$code] = array(); 
    } 

    $barcodeKeys[$code][] = $key; 

    if (count($barcodeKeys[$code]) > 1) { 
     foreach ($barcodeKeys[$code] as $dupKey) { 
      if (isset($myArray[$dupKey])) { 
       unset($myArray[$dupKey]); 
      } 
     } 
    } 
} 

$myArray = array_values($myArray); 
print_r($myArray); 

あなたが重複する値/両方同じ値を削除したい出力

Array 
(
    [0] => Array 
     (
      [Barcode] => 222 
      [Transaction_No] => 0 
     ) 

) 
+0

うわー!ありがとうebildude123予想される出力が正しい。ありがとう、私の一日を節約!ありがとう – coolshox

1

あなたの質問への高速アプローチ:

<?php 
$barcodes = array(array('Barcode' => 111,'Transaction_No' => 256),array('Barcode' => 111,'Transaction_No' => 0),array('Barcode' => 222,'Transaction_No' => 0),array('Barcode' => 333,'Transaction_No' => 0)); 
$result = array(); 
$exist = array(); 
foreach($barcodes as $key => $item){ 
    if(in_array($item['Barcode'], array_values($exixt)){ 
     unset($result[ array_search ($item['Barcode'], $exist) ]); 
    } else { 
     $result[ $key ] = array('Barcode' => $item['Barcode'],'Transaction_No' => $item['Transaction_No']); 
     $exist[ $item['Barcode'] ] = $key; 
    } 
} 

var_dump($result); 
+0

$ barcode変数はどこにありますか?それは動作しません – coolshox

+0

@coolshox申し訳ありませんが、変数名mistak。変更された – xAqweRx

+0

こんにちはxAqweRxコードのおかげで。 ebildude123コードは私の期待に非常に近い。とにかくアドバイスありがとう – coolshox