2016-07-22 6 views
0

So entfernen Sie multidimensionale Arrays, wenn sie dupliziert werden. In diesem Beispiel ist Barcode ein doppelter Wert von 111, den ich entfernen möchte, wenn er doppelt gefunden wird. Hilfe, ich bin neu zu PHP. DankDuplicate Multidimensional Array finden und aus dem Array entfernen. Php

Ausgang:

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

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

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

) 

Erwartete Ausgabe:

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

) 
+0

Sie wollen doppelten Wert/beide denselben Wert entfernen? –

+0

Was ich möchte, ist dieses Array 2 Array zu entfernen. Eigentlich seine dynamische Bedeutung, wenn gefunden Barcodedubletten entfernen alle Duplikate – coolshox

+0

Bedeutet, dass Sie die gleiche Barcode-Wert-Array richtig entfernen möchten? –

Antwort

1

Diese verfolgt die Tasten der einzelnen Elemente Barcode-Array zu finden Duplikate, verwendet am Ende array_values, um die Array-Indizierung zu reparieren.

<?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); 

Ausgabe

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

) 
+0

Woah! Danke egdude123 erwartete Ausgabe korrekt. Vielen Dank, du sparst meinen Tag! Vielen Dank – coolshox

1

Schnell Ansatz auf Ihre Frage:

<?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

Woher hast du die Variable $ barcode? es funktioniert nicht – coolshox

+0

@coolshox sorry, variabler Name mistak. geändert – xAqweRx

+0

Hallo xAqweRx danke für den Code. ebildude123 Code ist meiner Erwartung sehr nahe. Trotzdem danke für den Vorschlag – coolshox