Php 致命错误:';继续';不再支持具有非常量操作数的运算符

Php 致命错误:';继续';不再支持具有非常量操作数的运算符,php,fatal-error,Php,Fatal Error,我正在玩一些代码,并得到了这个错误,脚本应该与PHP5.2+一起工作,我正在运行5.4.27 完全错误,致命错误:第326行的C:\xampp\htdocs\inc.php中不再支持具有非常量操作数的“continue”运算符 第326行,continue$scrape[$tracker]=self::set_error(新异常('tracker request timeout('.$timeout.'s')),true) 完整的代码部分, 公共函数刮取($announce=null,$has

我正在玩一些代码,并得到了这个错误,脚本应该与PHP5.2+一起工作,我正在运行5.4.27

完全错误,
致命错误:第326行的C:\xampp\htdocs\inc.php中不再支持具有非常量操作数的“continue”运算符

第326行,
continue$scrape[$tracker]=self::set_error(新异常('tracker request timeout('.$timeout.'s')),true)

完整的代码部分,

公共函数刮取($announce=null,$hash\u info=null,$timeout=self::timeout){
$packed_hash=urlencode(pack('H*',$hash_info?$hash_info:$this->hash_info());
$handles=$scrape=array();
如果(!function_存在('curl_multi_init'))
返回self::set_error(新异常('Install CURL with“CURL_multi_init”enabled');
$curl=curl_multi_init();
foreach((数组)($announce?$announce:$this->announce())作为$tier)
foreach((数组)$tier作为$tracker){
$tracker=str_ireplace(数组('udp://'、'/announce'、':80/')、数组('http://'、'/scrape'、'/')、$tracker);
如果(isset($handles[$tracker]))
继续;
$handles[$tracker]=curl\u init($tracker'.?info\u hash='.$packed\u hash);
curl_setopt($handles[$tracker],CURLOPT_RETURNTRANSFER,true);
curl_setopt($handles[$tracker],CURLOPT_TIMEOUT,$TIMEOUT);
curl_multi_add_句柄($curl,$handles[$tracker]);
}
做{
而($state=curl\u multi\u exec($curl$running))==CURLM\u CALL\u multi\u PERFORM);
如果($state!=CURLM_OK)
继续;
而($done=curl\u multi\u info\u read($curl)){
$info=curl_getinfo($done['handle']);
$tracker=array_shift(分解(“?”,$info['url'],2));
if(空($info['http_code']))
继续$scrap[$tracker]=self::set_error(新异常('tracker request timeout('.$timeout.'s')),true);
elseif($info['http_代码]!=200)
继续$scrap[$tracker]=self::set_error(新异常('tracker request failed('.$info['http_code'.'code')),true);
$stats=self::解码数据(curl\u multi\u getcontent($done['handle']);
curl_multi_remove_句柄($curl,$done['handle');
$scrape[$tracker]=空($stats['files'])?
self::set_错误(新异常('Empty scrape data'),true):
数组移位($stats['files'])+(空($stats['flags'])?数组():$stats['flags']);
}
}同时($运行);
curl\u multi\u close($curl);
返回$scrap;
}
用于跳过当前循环的其余部分,并从下一次迭代开始。您可以在其后面输入一个数字,以告诉有多少循环级别将被跳过,直到迭代结束。如果不指定数字,则定义为1

但是你在后面放的不是数字,而是语句。尝试先执行语句,然后执行
continue

因此,改变:

if ( empty( $info['http_code'] ) )
    continue $scrape[$tracker] = self::set_error( new Exception( 'Tracker request timeout (' . $timeout . 's)' ), true );
elseif ( $info['http_code'] != 200 )
    continue $scrape[$tracker] = self::set_error( new Exception( 'Tracker request failed (' . $info['http_code'] . ' code)' ), true );
进入:

用于跳过当前循环的其余部分,并从下一个迭代开始。您可以在其后面输入一个数字,以告诉有多少循环级别将被跳过,直到迭代结束。如果不指定数字,则定义为1

但是你在后面放的不是数字,而是语句。尝试先执行语句,然后执行
continue

因此,改变:

if ( empty( $info['http_code'] ) )
    continue $scrape[$tracker] = self::set_error( new Exception( 'Tracker request timeout (' . $timeout . 's)' ), true );
elseif ( $info['http_code'] != 200 )
    continue $scrape[$tracker] = self::set_error( new Exception( 'Tracker request failed (' . $info['http_code'] . ' code)' ), true );
进入:

用于跳过当前循环的其余部分,并从下一个迭代开始。您可以在其后面输入一个数字,以告诉有多少循环级别将被跳过,直到迭代结束。如果不指定数字,则定义为1

但是你在后面放的不是数字,而是语句。尝试先执行语句,然后执行
continue

因此,改变:

if ( empty( $info['http_code'] ) )
    continue $scrape[$tracker] = self::set_error( new Exception( 'Tracker request timeout (' . $timeout . 's)' ), true );
elseif ( $info['http_code'] != 200 )
    continue $scrape[$tracker] = self::set_error( new Exception( 'Tracker request failed (' . $info['http_code'] . ' code)' ), true );
进入:

用于跳过当前循环的其余部分,并从下一个迭代开始。您可以在其后面输入一个数字,以告诉有多少循环级别将被跳过,直到迭代结束。如果不指定数字,则定义为1

但是你在后面放的不是数字,而是语句。尝试先执行语句,然后执行
continue

因此,改变:

if ( empty( $info['http_code'] ) )
    continue $scrape[$tracker] = self::set_error( new Exception( 'Tracker request timeout (' . $timeout . 's)' ), true );
elseif ( $info['http_code'] != 200 )
    continue $scrape[$tracker] = self::set_error( new Exception( 'Tracker request failed (' . $info['http_code'] . ' code)' ), true );
进入:


很酷,这解决了这一部分,恐怕我还有更多类似的问题,第671行显示了相同的错误,
continue self::set_error(新的异常('Files must in the same folder:'.$file.'discarded')
Complete code
foreach($i=>file){if($path!=array\u intersect\u assoc($file\u path=explode(目录分隔符,$file),$path))continue self::set\u错误(新异常('files必须在同一文件夹中:“.$file.”“丢弃”);if(!$handle=self::fopen($file,$filesize=self::filesize($file)))继续self::set_error(新异常('Failed to open file:'.$file.'discared');$pieces.=$this->pieces($handle,$piece_length,$count==$i);$info_files[]=array('length'=>filesize,'path'=>array_diff($file_path,$path));
@D_Guy13那么你不明白什么?首先执行您在
continue
后面的语句,然后执行
continue。将这两行代码用
{}
包起来,这样它们都可以在
if
/
else
中运行,因为
if
/
else
没有自己的
{}
当然,修复了,非常感谢,有新东西需要学习,感谢你的帮助。酷,解决了这一部分,恐怕我遇到了更多类似的问题,第671行显示了相同的错误,
continue self::set_error(新的异常('文件必须在同一文件夹中:'.$file')”