我收到以下通知
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]
获取$ results的第二个字符引起的吗?如果是这样,在互联网上阅读,建议$string[]
显示substr()
,那么为什么会产生通知呢?
我的脚本依赖于此文件来生成JSON,因此通知会破坏它(这是一个问题,因为它是一个开源脚本)
答案 0 :(得分:1)
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
。