2012-01-28 88 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); 
    } 
}