遇到以下PHP代码片段
class SearchGoogle extends Thread
{
public function __construct($query)
{
$this->query = $query;
}
public function run()
{
$this->html = file_get_contents('http://google.fr?q='.$this->query);
}
}
$searches = ['cats', 'dogs', 'birds'];
foreach ($searches as &$search) {
$search = new SearchGoogle($search);
$search->start();
}
我在理解下面的foreach
循环时遇到了问题。对我而言看起来像
$search
变量同时用作$searches
数组的元素和SearchGoogle
的实例。这可能在PHP吗?
答案 0 :(得分:0)
PHP是松散类型的,没有什么可以阻止你重用变量:
$foo = 'Bar';
var_dump($foo);
$foo = M_PI;
var_dump($foo);
$foo = new DateTime();
var_dump($foo);
string(3) "Bar"
float(3.1415926535898)
object(DateTime)#1 (3) {
["date"]=>
string(26) "2017-05-31 12:29:01.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Madrid"
}
在这种情况下,代码大致相当于:
$searches = ['cats', 'dogs', 'birds'];
foreach ($searches as $index => $search) {
$searches[$index] = new SearchGoogle($search);
$searches[$index]->start();
}
换句话说,它用SearchGoogle
类的实例替换数组中的字符串。