无法在PHP中设置变量类型

时间:2012-01-28 21:26:16

标签: php algorithm types variable-types

假设我有一个这样的数组:

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

如果数组中尚不存在给定字符串的部分(即使它由数字组成),我想将它添加到数组中。例如,如果给定字符串为1234,则应添加122334。我为此编写了简单的代码:

$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,但不存在。{/ p>

原因是02等于2 (在第一个给定数组中)作为整数。这就是代码跳过它的原因。但我需要添加它。

为了解决问题,我将$element的类型设置为string。我在代码中settype($element,'string');之后添加了$string_length,但没有任何变化。

我该怎么办?

2 个答案:

答案 0 :(得分:3)

尝试:

if (!in_array($element, $array, true)){

http://php.net/manual/en/function.in-array.php

答案 1 :(得分: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);
    }
}