@Kirill-Gorelov
С ума с IT

In_array не ищет, как найти?

Всем привет. In_array не ищет, стал гуглить, нашел массу примеров и ходов, но не помогло.
Но когда я искомую строку пишу руками, то эта функция находит. Если через переменную, то нет, не находит.
Прошелся trim по всем значениям массива, на всякий случай, потом вручную поставил \n и \r\n в конец переменной, не ищет.
Удаляю пробелы в массиве
function trim_value(&$value)
{
    $value = trim($value);
}
$text = file($pathishod.$val); // само письмо
$result = file('result.txt');
array_walk($text, 'trim_value'); // первый массив, удалил пробелы
array_walk($result, 'trim_value'); // второй массив, удалил пробелы

Далее начинаю искать
$ick = $text[3];
if(in_array($ick, $result, true) == true){
echo "нашел";
}

И не нахожу.
Функция сработает если я напишу так, напрямую.
$ick = "Subject: Re: Заказ №17938";
Вот кусок массива, где надо найти
[39] =>
  string(42) "9063. 07.04.2014 - Заказ №17938.txt"
  [40] =>
  string(60) "From: "фио" <926*******@mail.ru>"
  [41] =>
  string(25) "Date: 07.04.2014 13:14:18"
  [42] =>
  string(32) "Subject: Re: Заказ №17938"


Почему не ищет, что с ней не так?
  • Вопрос задан
  • 327 просмотров
Пригласить эксперта
Ответы на вопрос 2
@IceJOKER
Web/Android developer
обычно если и пишут подобные функции, то их пишут, чтоб укоротить название, а вы взяли trim и удлинили его до trim_value, зачеееем? О_О

вы уверены, что нужно юзать array_walk, а не php.net/manual/en/function.array-walk-recursive.php ? потому что var_dump вам выдал многомерный массив.

$ick = $text[3];
if(in_array($ick, $result, true) == true){
echo "нашел";
}


замените на
$ick = $text[3];
var_dump($ick);
if(in_array($ick, $result, true)){ //насчет третьего аргумента вы уверены? если проверяете только строки, то зачем так строго ?
  echo "нашел";
}
Ответ написан
Комментировать
@CodeKeeper
Symfony/Magento developer
А что говорит дебаг $ick = $text[3]; ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы