2014-04-29 28 views
0

I'm面臨這個問題,大概這是愚蠢的......但在這裏,我們去:填充數組與非重複鍵值PHP的

我有一個普通的foreach:

foreach $values as $values => $key { 
    $test[] = $key; 
} 
當然

測試是在循環外部定義的。現在

,這將返回是這樣的:

array(6) { 
[0]=> int(10) 
[1]=> int(16) 
[2]=> int(10) 
[3]=> int(16) 
[4]=> int(10) 
[5]=> int(16) 
[6]=> int(10) 
} 

不過,我需要重複的值被忽略,因此,測試會是這樣的:

array(2) { 
[0]=> int(10) 
[1]=> int(16) 
} 

和新值僅添加如果只有在不重複的情況下。我已經嘗試array_unique和array_values但是我不使用如果我實施它們不好或有什麼問題...

任何幫助將不勝感激。

最好的問候。

+0

目前還不清楚給我你想要什麼 – Daan

+3

使用'array_unique'時出了什麼問題?另請參閱'in_array'。 – Jim

+0

它由於某種原因返回null – andresmijares25

回答

2

如果你只是要添加的值,如果不存在的話,使用in_array()

$test=array(); 
    // organize the array by cusip 
    foreach ($values as $values => $key) { 
      if(!in_array($key, $test)){ 
      $test[]=$value; 
      }  
    } 
+0

這工作完美,也看起來優雅,謝謝噸 – andresmijares25

+0

沒問題,隨時標記爲接受的答案:) – Naruto

1

爲什麼不使用array_unique()

考慮這樣一個例子:

$values = array_unique($values); 

,或者如果你不想使用array_unique(),你可以用另一種方式做到這一點:

foreach ($values as $index => $element) { 
    if(!in_array($element, $values)) { 
     $test[] = $element; 
    } 
} 
+0

是的,但由於某種原因,現在這個鍵值 – andresmijares25

1

如何array_unique分配使用數組:

<?php 
    $x = array 
    (
     0 => 'int(10)', 
     1 => 'int(16)', 
     2 => 'int(10)', 
     3 => 'int(16)', 
     4 => 'int(10)', 
     5 => 'int(16)', 
     6 => 'int(10)' 
    ); 

    $x = array_unique($x); 
    print_r($x); 
?> 

Thi遺囑輸出

Array 
(
    [0] => int(10) 
    [1] => int(16) 
) 
+0

現在這個返回null,謝謝一噸,它發揮了訣竅,我知道這是愚蠢的,我正在將array_unique應用到$ w的foreach中。 – andresmijares25

0

這裏你的陣列是

$test = array(6) { 
[0]=> int(10) 
[1]=> int(16) 
[2]=> int(10) 
[3]=> int(16) 
[4]=> int(10) 
[5]=> int(16) 
[6]=> int(10) 
} 

您可以使用array_unique($test)這將消除重複值。

+0

你可以添加一些解釋,也許是一個例子嗎?就目前而言,這個答案太短了。 – 2rs2ts

1

如果array_unique不知何故不會爲你工作,你可以使用:

<?php 
foreach($values as $values => $key){ 
    if(!in_array($key, $test)) 
     $test[] = $key; 
} 
?>