Невозможно установить тип переменной в PHP - PullRequest
0 голосов
/ 29 января 2012

Допустим, у меня есть такой массив:

$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, но его нет.

Причина в том, что 02 равно 2 (которое находится в первом заданном массиве) как целое число. Вот почему код пропустил его. Но мне нужно добавить это.

Для решения проблемы я установил тип $element как string. Поэтому я добавил settype($element,'string'); после $string_length в своем коде, но ничего не изменилось.

Что я могу сделать?

Ответы [ 2 ]

3 голосов
/ 29 января 2012

попробуй:

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

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

0 голосов
/ 29 января 2012

Используйте следующий код:
Обратите внимание, что я передаю 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);
    }
}
...