2015-10-15 61 views
0

我是一个新手,在这个主题之前我已经阅读了很多关于这个问题的东西(包括一些主题),但是我还没有完全理解,所以我会寻求一些帮助(如果可能的话):)如何合并不重复的数组中的多个数组

因此,在列,我想打印我对每一行这样的价值观:

值1 |值2 |值5 | value12 | value25

值3 |值5 | value12 | value14 | value26 | VALUE32 | value55

value1 | value2 | value14 | value26 | value31

行数可以是3或1500 + ...所以我想合并数组并打印这些值排序和没有重复:value1,value2,value3,value5 ,value12等..

我试图引爆阵列,但我无法找出如何将一个变量分配给每一个阵列,并把它们合并,所有我做的是打印所有值:

foreach ($rows as $areas) { 
    foreach (explode('|', $areas->value) as $area) { 
     var_dump($area); 
    } 
} 

之后,我读了一些地方,如果我有很多行(我将有数千行),所以我卡在这里,我不知道我还能做什么做...

我会感谢所有帮助和方向,你可以给我,因为实在是太辛苦了我,我不能这样做没有帮助

预先感谢您

+0

的可能的复制[如何删除重复值从PHP中的数组](http://stackoverflow.com/questions/307650/how-to-remove-duplicate-values-from-an-array-in-php) – Machavity

回答

0

你可以将爆炸字符串的每个值存储为键(如果它不是对象或数组),它只存储唯一值。然后,你必须只使用array_keys()拿到钥匙和排序返回的数组:

$rows = array(
    'value1|value2|value5|value12|value25', 
    'value3|value5|value12|value14|value26|value32|value55', 
    'value1|value2|value14|value26|value31' 
); 

$results = array(); 
foreach ($rows as $row) { 
    $items = explode('|', $row); 
    foreach ($items as $item) { 
     $results[$item] = 0; 
    } 
} 
$results = array_keys($results); 
sort($results, SORT_NATURAL); 

Live demo on eval.in

+0

'$ results [$ item] = 0; '是丑陋的,更好的使用'$ results [] = $ item;'''array_unique()'。我认为'sort()'函数不工作,因为所有的值都是0. – Roy

+0

@Roy这就是为什么我在排序前使用'array_keys()'。 – marian0

+0

@罗伊,也许它很丑,但比'array_unique()'之后使用效率更高。 – marian0

0

这样做有两种方式:

<?php 

$str = 'value1|value2|value5|value12|value25'; 
$str1 = 'value3|value5|value12|value14|value26|value32|value55'; 
$str2 = 'value1|value2|value14|value26|value31'; 


//-- Method 1: Concat and make a single string and then explode and make a single array 
$finalString = $str . '|' . $str1 . '|' . $str2; 
print_r(array_unique(explode('|', $finalString))); 

//-- Method 2: explode first and then merge into a single array 
$strArr = explode('|', $str); 
$strArr1 = explode('|', $str1); 
$strArr2 = explode('|', $str2); 
print_r(array_unique(array_merge($strArr, $strArr1, $strArr2))); 
相关问题