2016-07-22 100 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