2015-10-15 62 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))); 
相關問題