我原本的程式碼如下
$fh = fopen('/proc/meminfo', 'r');
if($fh) {
$i=0;
while( !feof($fh) ) {
$buffer = fgets($fh);
list($key[$i], $value[$i]) = explode(':', $buffer);
$i++;
}
}
print_r($value);
執行之後PHP會一直出現 PHP Notice: Undefined offset: 1 錯誤訊息,問Google大神後得知可能是因為EOF的關係會多一行空白,導致陣列出現錯誤索引,我試著用preg_replace也無法將這空白拿掉,最後用strpos函式先確認每一行是否有我要的字串,才將此問題解決。程式改寫如下
$fh = fopen('/proc/meminfo', 'r');
if($fh) {
$i=0;
while( !feof($fh) ) {
$buffer = fgets($fh);
if( strpos($buffer, ':') ) {
$buffer = preg_replace( array('/\s+/', '/\n/', '/(kB)$/'), '', $buffer);
list($key[$i], $value[$i]) = explode(':', $buffer);
$i++;
}
}
fclose($fh);
}
print_r($value);
沒有留言:
張貼留言