2016-03-21 85 views
0

即使嘗試使用in_arrayarray_unique這兩個函數,我的代碼仍會顯示重複值。我從數據庫中獲取值。某些行具有多個值。 我想用逗號分解它們,並刪除重複項。 請幫忙,提前致謝。in_array和array_unique不起作用

<?php while ($row = mysql_fetch_array($sql)) { 
    $mark=explode(',', $row['sku']); 
    foreach($mark as $out) { 
    if(!in_array($out, $array)){ 
    $array[] = $out; 
    } 
    } 

} 
$unique_array = array_unique($array, SORT_REGULAR); 
natsort($unique_array); 
print_r($unique_array); 
?> 
+0

能不能請你格式化你的代碼幫助他人更好地理解它? – Cronco

+0

我做了,請檢查它是否適用於您 – user3180708

+0

看起來像'perl'。將其標記爲獲得正確的受衆羣體。 –

回答

0

這裏是一個示例代碼,它應該做你想要什麼:http://sandbox.onlinephpfunctions.com/code/4895a5b39c555835e378114eabc7ed78c6811285

<?php 

// I create some sample data 
$rows = [['sku' => 'a,b,c'], ['sku' => 'c,d,e'], ['sku' => 'e,f,g']]; 

$array = []; 

// You want to replace this with your while loop 
foreach ($rows as $row) { 
    $mark = explode(',', $row['sku']); 

    foreach ($mark as $out) { 
     if (!in_array($out, $array)) { 
      array_push($array, $out); 
     } 
    } 

} 

// I don't think you need this here, because you already ensure that the array won't contain duplicates 
$unique_array = array_unique($array, SORT_REGULAR); 

natsort($unique_array); 
var_dump($unique_array); 
var_dump($array); 

因此,使用您的while ($row = mysql_fetch_array($sql))它應該是這樣的:

<?php 

$array = []; 
while ($row = mysql_fetch_array($sql)) { 
    $mark = explode(',', $row['sku']); 

    foreach ($mark as $out) { 
     if (!in_array($out, $array)) { 
      array_push($array, $out); 
     } 
    } 

} 

natsort($unique_array); 
var_dump($unique_array); 
+0

謝謝你的幫助,我試過編輯我的代碼,但不適用於我,你可以檢查,而請($行= mysql_fetch_array($第三)){ $ nmp [] = $ row ['sku 「]; ($ nmp as $ row)$ } foreach ($ out,$ array,true)){ array_push($ array,$ out); \t \t \t echo $ out; } } } natsort($ array); foreach($ array as $ color){ echo $ color。'
'; } – user3180708

+0

您可以使用您的代碼更新原始文章,或者如果問題不同,可以創建新問題?您還可以提供一個顯示您的問題的例子,例如使用http://sandbox.onlinephpfunctions.com – Philipp