2013-02-08 62 views
0

以下是我的代碼:檢查重複值的整數數組PHP

$array1=('23','3','55','67'); 
function has_dupes($array1){ 
$dupe_array = array(); 
foreach($array1 as $val){ 
    if(++$dupe_array[$val] > 1){ 
    return true; 
    } 
} 
return false; 
} 

我是新來的PHP,並想編寫一個函數來檢查重複的整數數組。我的代碼如下:

它給出了一個錯誤:Parse error: syntax error, unexpected ',' on line 1

+0

使用類似array_count_values()(http://www.php.net/manual/en/function.array-count-values.php)或array_unique()(http://www.php.net/manual例如return(max(array_count_values($ myArray))> 1); – 2013-02-08 12:30:06

+0

回聲回聲回聲... – Basic 2013-02-08 12:31:18

回答

1

您可以使用array_unique輕鬆執行此檢查。只需比較原始數組的長度與數組的唯一版本的長度。

function has_dupes($array){ 
    return count($array) != count(array_unique($array)); 
} 

另外,您還想使用array()聲明一個數組。

3

你錯過了array關鍵字

$array1 = array('23','3','55','67'); 
     ^// here was the mistake 
1
$array1= array(23,3,55,67); 

線程的整數爲整數。

1

通過將數字放在引號中,您將它們視爲字符串。此外,數組的語法是錯誤的...

$array1 = array(1,2,25,26); 
1

這是錯誤

$array1=array('23','3','55','67'); 
2

你眼前的問題是,你使用了錯誤的數組語法。正確要麼是

$array1 = ['23','3','55','67']; // only possible in PHP >= 5.4 

$array1 = array('23','3','55','67'); // all versions of PHP 

關於欺騙檢測功能,你不需要一個,因爲有一個現成的一個,你可以使用:array_unique

if (count(array_unique($array)) != count($array)) { 
    // the array has dupes 
} 
+0

'$ array1 = ['23','3','55','67'];'確實對php有效<5.4 – j0k 2013-02-08 12:32:41

+0

@ j0k:好吧,現在一年。無論如何,我添加了一條評論來澄清。 – Jon 2013-02-08 12:34:18

+0

我知道,可悲的是PHP 5.4並沒有真正用於比較PHP 5.3。 – j0k 2013-02-08 12:36:02

3
function has_duplicates($myArray) { 
    return (max(array_count_values($myArray)) > 1); 
} 
+1

+1獲得唯一性的不同方法。 – 2013-02-08 12:35:47

1

爲什麼你不這樣做?

$array1 = array_unique($array1) 

我誤解了這個問題嗎?