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