Я уже сделал миллион сценариев if и foreach в сценариях и раньше, но этот, похоже, не могу понять.Это просто не работает ...?Возможно, это одна из тех вещей, что если вы посмотрите на нее 100 раз, вы не увидите ошибку и вам понадобится второй набор глаз.Итак, вот код:
private function removeResultsByUID() {
foreach ($this->searchResults as $key => $value) {
if (!$this->searchResults[$key]['authorUID'] == $this->searchUID)
unset($this->searchResults[$key]);
}
return;
}
Достаточно просто, это часть программы поиска по форуму, которая пытается удалить результаты поиска на основе имени пользователя, которое они могли ввести для фильтрации.Проблема в том, что это не фильтрация, поэтому я перешел в тестовый режим и скорректировал код, чтобы увидеть, что происходит:
private function removeResultsByUID() {
foreach ($this->searchResults as $key => $value) {
var_dump($this->searchResults[$key]['authorUID']);
echo ' ';
var_dump($this->searchUID);
echo '<br />';
if (!$this->searchResults[$key]['authorUID'] == $this->searchUID) {
echo "This isn't a match";
unset($this->searchResults[$key]);
}
}
die();
return;
}
Хорошо, так что простой способ проверить, вывести дамп переменныхесли посмотреть, что их значения установлены (используя var_dump вместо echo, чтобы убедиться, что они оба являются строковыми типами, насколько мне известно).Затем я добавляю эхо в if, чтобы увидеть, когда срабатывает условие if.Затем убейте скрипт для просмотра результатов.Я добавляю в некоторые критерии поиска имя пользователя, программа меняет его на userID, основываясь на таблице в БД, каждый результат, который он получает из поиска, который соответствует, добавляет идентификатор пользователя автора в массив результатов.Вот что я получаю:
string(1) "3" string(1) "3"
string(1) "1" string(1) "3"
string(1) "1" string(1) "3"
string(1) "1" string(1) "3"
Похоже, что if никогда не запускается, даже несмотря на то, что дамп-переменные, которые использует if, создают впечатление, что должны запускаться в течение последних 3 итераций.Я смотрел на это в течение часа.Что, черт возьми, я сделал не так?Я собираюсь надрать себя за глупую ошибку, я уверен, я просто не вижу ее.Спасибо за любую помощь!