Это убивает меня.Это кажется таким простым, но по какой-то причине я не могу заставить его работать.
По сути, у меня есть функция, которая принимает одну строку $name
в качестве переменной, затем она проходит и проверяет эту переменную на соответствиезначения в массиве.Если переменная найдена в массиве, возвращается TRUE
.Эта функция вызывается из цикла foreach в другой функции (которая каждый раз отправляет новую переменную $name
).
Я пробовал 3 различных способа проверки переменной в массиве, но она никогда не работает должным образом.
1.) с использованием другой foreach()
петли
function check($name) {
$commaSeparatedString = 'First Name, Second Name, Third Name';
$array = explode(",", $commaSeparatedString);
foreach($array as $arrayValue) {
if($arrayValue == $name) {
return TRUE;
}
else {
return FALSE;
}
}
}
2.) с использованием in_array()
function check($name) {
$commaSeparatedString = 'First Name, Second Name, Third Name';
$array = explode(",", $commaSeparatedString);
if(in_array($name, $array, TRUE)) {
return TRUE;
}
else {
return FALSE;
}
}
3.) цикл через каждое значение в массиве вручную и проверка на совпадение
function check($name) {
$commaSeparatedString = 'First Name, Second Name, Third Name';
$array = explode(",", $commaSeparatedString);
$count = count($array);
$i = 0;
while($i<=$count) {
if(isset($array[$i]) && $array[$i] == $name) {
$i++;
echo $i;
return TRUE;
break;
}
else {
$i++;
echo $i;
return FALSE; }
}
}
Вот упрощенная часть функции, в которой запускается check()
:
function loopCheck() {
$group = array($obj1, $obj2, $obj3, $obj4, $obj5);
foreach($group as $groupValue) {
$name = $groupValue->name;
$ignore = $this->check($name);
if($ignore == TRUE) { }
else { echo $name; }
}
}
Результат для всех трех вариантов check()
одинаков.Возвращает TRUE
для каждого $groupValue
, кроме первого значения $array
.Таким образом, если $name
из $obj2
было 'Имя', оно вернуло бы TRUE
, но если $name
из $obj3
было 'Второе имя', все равно возвращается FALSE
.Я повторил $i
для третьего варианта в одной точке, и значение постоянно оставалось равным 1, поэтому я знаю, что в этом методе есть какая-то ошибка, но я не знаю, почему результат будет таким же, если использовать другие 2 метода.