При обработке строки как массива символов возвращается & quot; смещение неинициализированной строки & quot; замечаете?

Я получаю следующее уведомление

Notice: Uninitialized string offset: 1 in /script.php on line 17

Вот строки 16 и 17

$results = exec('ping -c 1 -w 1 ' . $ip, $output);
$servers[] = ($results[1] === '' ? false : true);

Это вызвано тем, что я использую $results[1] получить второй символ $ результатов? Если так, то читая в интернете, похоже $string[] рекомендуется более substr() так почему он генерирует уведомление?

Мой скрипт использует этот файл для генерации JSON, поэтому уведомление разбивает его (и это проблема, так как это скрипт с открытым исходным кодом)

0

Решение

exec возвращает строку Для доступа к каждому символу в строке вы можете использовать обозначение массива $string[x] лайк $string[1] начиная с 0, Однако, если есть 0 или 1 символ, то [1] не существует Похоже, вы просто проверяете строку, как вы проверяете '', Используйте одно из следующего:

$servers[] = $results ? true : false;
//or
$servers[] = ($results === '') ? true : false;

На основании вашего комментария, чтобы проверить положение символа и пробел:

$servers[] = (isset($results[1]) && $results[1] === ' ') ? false : true;
//or
$servers[] = (strpos($results, ' ') === 1) ? false : true;

я хотел бы использовать strpos,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]