2017-01-14 4 views
0

Ich habe ein Array und ich brauche einzigartige Inhalte. Wie kann ich in diese loswerden Duplikate erhalten $ tmparray:PHP: Wie erhält man einzigartigen Inhalt von Array?

array(176) { 
    [0]=> 
    array(2) { 
    [0]=> 
    string(22) "/ads/67006/didi" 
    [1]=> 
    string(73) "/Content/Pictures/Scaled/7b5c69572fdb1569ced695c278072ae0.jpg" 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    string(22) "/ads/67006/didi" 
    [1]=> 
    string(73) "/Content/Pictures/Scaled/7b5c69572fdb1569ced695c278072ae0.jpg" 
    } 
    [2]=> 
    array(2) { 
    [0]=> 
    string(22) "/ads/67006/didi" 
    [1]=> 
    string(73) "/Content/Pictures/Scaled/7b5c69572fdb1569ced695c278072ae0.jpg" 
    } 
    [3]=> 
    array(2) { 
    [0]=> 
    string(19) "/ads/67010/sylvesta" 
    [1]=> 
    string(73) "/Content/Pictures/Scaled/83ebba04b8eabd0458cc6dbbb85581da.jpg" 
    } 
    [4]=> 
    array(2) { 
    [0]=> 
    string(19) "/ads/67010/sylvesta" 
    [1]=> 
    string(73) "/Content/Pictures/Scaled/83ebba04b8eabd0458cc6dbbb85581da.jpg" 
    } 
    [5]=> 
    array(2) { 
    [0]=> 
    string(19) "/ads/67010/sylvesta" 
    [1]=> 
    string(73) "/Content/Pictures/Scaled/83ebba04b8eabd0458cc6dbbb85581da.jpg" 
    } 

Aber ich will es so aussehen: (. Nur einzigartige Inhalte)

array(176) { 
    [0]=> 
    array(2) { 
    [0]=> 
    string(22) "/ads/67006/didi" 
    [1]=> 
    string(73) "/Content/Pictures/Scaled/7b5c69572fdb1569ced695c278072ae0.jpg" 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    string(19) "/ads/67010/sylvesta" 
    [1]=> 
    string(73) "/Content/Pictures/Scaled/83ebba04b8eabd0458cc6dbbb85581da.jpg" 
    } 
    } 

Ich habe versucht, mit:

array_unique($tmparray); 

array_unique kann nicht tun, was ich will. Hat jemand eine Idee, wie man das löst?

+0

werden Sie diese Daten an die "$ tmparray" hinzufügen? –

+0

@AbdullahMallik das ist Ergebnis von var_dump ($ tmparray) jetzt muss ich doppelte Inhalte entfernen. – Cyborg

Antwort

0

Ich habe es mit dieser Linie arbeiten:

$tmparray = array_unique($tmparray, SORT_REGULAR); 
0

können Sie diesen Code verwenden:

$newarray= array(); 
foreach ($tmparray as $value) { 
    if (!in_array($value,$newarray)) { 
     $newarray[ ] = $value; 
    } 
} 
var_dump($newarray); 
0

ich davon ausgehen, dass die von Ihnen zwei Elemente duplizieren bedeuten, wobei entweder Elemente passen, da Sie Anzeigen auf ihre Bilder zuordnen, daher:

$target = array(); 
$elementCount = count($tmparray); 
$newElementCount = 0; 
for ($i = 0; $i < $elementCount; $i++) { 
    $found = false; 
    for ($j = 0; (!$found) && (j < $newElementCount); j++) { 
     $found = $target[$j][0] === $tmparray[$i][0] || $target[$j][1] === $tmparray[$i][1]; 
    } 
    if (!$found) { 
     $target[$newElementCount++]=$tmparray[$i]; 
    } 
} 
2

Ihre Frage scheint ein Duplikat davon zu sein
How to remove duplicate values from a multi-dimensional array in PHP

ich denke, array_map wird Ihr Problem lösen em

$input = array_map("unserialize", array_unique(array_map("serialize", $input))); 
+0

Danke, das funktioniert wirklich. Aber ich habe eine andere Lösung in dem von Ihnen bereitgestellten Link gefunden, die kürzer ist und so funktioniert, wie ich es wollte. – Cyborg

0

PHP array_unique ist nur für eindimensionale Arrays verwendet, für mehrdimensionale Sie dies durch Serialisierung mehrdimensionales Array tun, wie unten

<?php 
$dataArray = [ 
       0=>["/ads/67006/didi","/Content/Pictures/Scaled/7b5c69572fdb1569ced695c278072ae0.jpg"], 
       1=>["/ads/67010/sylvesta","/Content/Pictures/Scaled/83ebba04b8eabd0458cc6dbbb85581da.jpg"], 
       2=>["/ads/67006/didi","/Content/Pictures/Scaled/7b5c69572fdb1569ced695c278072ae0.jpg"], 
       3=>["/ads/67010/sylvesta","/Content/Pictures/Scaled/83ebba04b8eabd0458cc6dbbb85581da.jpg"], 
      ]; 
$serilaized = []; 
$newArr = []; 
### serilaize each node of multi array and create a new single dimention array..   
foreach($dataArray as $val){ 
    $serilaized[] = serialize($val); 
} 
### now perform array unique.. 
$serilaized_unique = array_unique($serilaized); 
## unserialize each node of uniqur array.. 
foreach($serilaized_unique as $val){ 
    $newArr[] = unserialize($val); 
} 
echo "<pre>";print_r($newArr); 
?> 

Diese Sie geben:

Array 
(
    [0] => Array 
     (
      [0] => /ads/67006/didi 
      [1] => /Content/Pictures/Scaled/7b5c69572fdb1569ced695c278072ae0.jpg 
     ) 

    [1] => Array 
     (
      [0] => /ads/67010/sylvesta 
      [1] => /Content/Pictures/Scaled/83ebba04b8eabd0458cc6dbbb85581da.jpg 
     ) 

) 

Kurz gesagt, Sie können dies in Einleitungscode mit array_map

durchführen
$dataArray = array_map('unserialize', array_unique(array_map('serialize', $dataArray))); 
Verwandte Themen