PHP - Проверить наличие элемента в массиве

Есть такой массив

Array ( [0] => [1] => 1.0.136.30 [2] => 1.0.136.29 ... (И так далее)

Мне нужно проверить есть ли в массиве элемент(предположим 1.0.136.30). Если есть - действие1, если нет - действие2. Этот код не срабатывает:

$lines = file('./database.txt');
$ip = "1.0.136.30";

if(in_array($ip, $lines)){
    // действие 1
    print_r("действие 1");
}else{
    // действие 2
    print_r("действие 2");
}

Всегда происходит действие2, вне зависимости есть эелемент в массиве или нет


Ответы (1 шт):

Автор решения: pgood

Попробуйте выявить проблему так:

$filePath = './database.txt';
if(!is_file($filePath)){
    throw new \Exception('Файл не найден');
}
if(!is_readable($filePath)){
    throw new \Exception('Нет прав на чтение файла');
}
if($lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)){
    echo '<p>Файл прочитан успешно, всего строк'. count($lines) .'</p>'
}else{
    throw new \Exception('Файл не содержит данных');
}

$ip = "1.0.136.30";

if(in_array($ip, $lines, true)){
    print_r("действие 1");
}else{
    print_r("действие 2");
}
→ Ссылка