2017-05-31 10 views
1

に関するいくつかの明確化が必要、私は以下のforeachループを理解し、問題を持って、次のPHPコードの断片は、指定した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(); 
} 

に出くわしました。私にとっては、 のように、$search変数は、$searchesの要素として、そしてSearchGoogleのインスタンスとして同時に使用されます。これはPHPで可能ですか?

+1

$ search(例えば 'cats 'という文字列)の元のエントリが' SearchGoogle'のインスタンスで上書きされることを意味する参照( '&$ search'として、アンパサンドに注意してください)その検索用語に関連する。ループの後、 '$ search'は' 'cat ''、 'dogs'、 'birds'の代わりに** SearchGoogle( 'cats')、SearchGoogle( 'dogs')、SearchGoogle( 'birds') ''。 – ccKep

+0

シンプルでコンパクトな説明に感謝します。それはクールでした。あなたの投稿を私を助けたものとしてマークするにはどうしたらいいですか? –

+0

コメントです。あなたはそれを上書きすることはできません。私は答えとして投稿していたが、私の基準を満たしているとは思わなかった;-)それは同じ情報を持っているので、@ÁlvaroGonzálezの答えを受け入れることができます。 – ccKep

答えて

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クラスのインスタンスに置き換えます。