假设我有一个这样的数组:
$array = array ('1','2','3','4');
如果数组中尚不存在给定字符串的部分(即使它由数字组成),我想将它添加到数组中。例如,如果给定字符串为1234
,则应添加12
,23
和34
。我为此编写了简单的代码:
$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
,但没有任何变化。
我该怎么办?
答案 0 :(得分:3)
答案 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);
}
}