2012-01-28 125 views
0

比方說,我有一個這樣的數組:無法設置變量類型在PHP

$array = array ('1','2','3','4'); 

我想定字符串的部分(甚至它由數字)添加到陣列中如果不是已經存在於數組中。例如,如果給定的字符串是1234,則應該添加12,2334。我寫了簡單的代碼,它是這樣的:

$string = '1234'; 
$string_length = 4; 
$array = array ('1','2','3','4'); 
for($i=0;$i<$string_length-1;$i++){ 
    $element = substr($string,$i,2); 
    if (!in_array($element, $array)){ 
     array_push($array, $element); 
    } 
} 

它工作得很好,當我嘗試1234$string。但是,當我嘗試1024$string,它返回數組是這樣的:

Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
    [3] => 4 
    [4] => 10 
    [5] => 24 
) 

正如你看到的,[4] => 10後,必須有[5] => 02,但是沒有它。

原因是02等於2(它在第一個給定數組中)作爲整數。這就是代碼跳過它的原因。但我需要添加它。

爲了解決問題,我將$element的類型設置爲string。所以我在$string_length後面加了settype($element,'string');在我的代碼中,但沒有改變。

我該怎麼辦?

回答

0

使用下面的代碼:
通知我傳遞true到in_array功能。它做了一個嚴格的比較。 http://www.php.net/manual/en/function.in-array.php

$string = '1024'; 
$string_length = 4; 
$array = array ('1','2','3','4'); 
for($i=0;$i<$string_length-1;$i++){ 
    $element = substr($string,$i,2); 
    if (!in_array($element, $array, true)){ 
     array_push($array, $element); 
    } 
}