Я получаю следующее уведомление
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, поэтому уведомление разбивает его (и это проблема, так как это скрипт с открытым исходным кодом)
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
,
Других решений пока нет …