2015-06-15 91 views
1

我想填充在PHP中的數組如下:灌裝PHP陣列「for」循環

<?php 

$maxPages = 20; 

for ($i = 0; $i <= $maxPages; $i++) { 

    $url = 'http://127.0.0.1/?page='.$i; 

    $targets = array(
      $url => array(
        CURLOPT_TIMEOUT => 10 
      ), 
    ); 

} 

print_r($targets); 

?> 

但是似乎只顯示最後填充值:

Array 
(
[http://127.0.0.1/?page=20] => Array 
    (
     [13] => 10 
    ) 

) 

我還試圖改變: 「$目標=」 到 「$目標[] =」 然而,產生這樣的輸出:當我的期望的輸出是

[0] => Array 
    (
     [http://127.0.0.1/?page=0] => Array 
      (
       [13] => 10 
      ) 

    ) 

[1] => Array 
    (
     [http://127.0.0.1/?page=1] => Array 
      (
       [13] => 10 
      ) 

    ) 

[2] => Array 
    (
     [http://127.0.0.1/?page=2] => Array 
      (
       [13] => 10 
      ) 

    ) 

Array 
(
[http://127.0.0.1/?page=0] => Array 
    (
     [13] => 10 
    ) 

[http://127.0.0.1/?page=1] => Array 
    (
     [13] => 10 
    ) 

[http://127.0.0.1/?page=2] => Array 
    (
     [13] => 10 
    ) 

也許一個簡單的辦法,但我無法看到它。 有更多知識的人可以指出我的錯誤嗎?

謝謝!

+2

'$目標[] = ...'你重新分配在每個循環中的'$ targets'變量,而不是添加 – Ankh

+0

我也試過,但它也沒有給我正確的輸出,看到更新的問題。 – datether

+1

在這種情況下,您希望'$ targets [$ url] = array(CURLOPT_TIMEOUT => 10);' – Ankh

回答

0

試試這個代碼:

$maxPages = 20; 
$targets = array(); 
for ($i = 0; $i <= $maxPages; $i++) { 

    $url = 'http://127.0.0.1/?page='.$i; 

     $targets[$url] = array(
      CURLOPT_TIMEOUT => 10 
     ); 

} 
echo "<pre>"; 
print_r($targets); 
0

如簡單循環體改變爲:

$targets[] = array(// <-- NOTE THE [] 
     $url => array(
       CURLOPT_TIMEOUT => 10 
     ), 
); 
+0

感謝您的貢獻 – datether

0
$targets[] = array(
     $url => array(
       CURLOPT_TIMEOUT => 10 
     ), 
); 

使用[]到陣列追加到$targets而不是覆蓋。

+0

感謝您的貢獻 – datether

0
$targets = array(); 
for ($i = 0; $i <= $maxPages; $i++) { 

    $url = 'http://127.0.0.1/?page='.$i; 

    **$targets[]** = array(
     $url => array(
       CURLOPT_TIMEOUT => 10 
     ), 
); 

} 

使用目標[]從我們在評論推斷創建一個新的陣列中的每個循環

0

所以:你的第一個問題是,你重新分配迴路中的$targets變量,而不是附加到該數組使用[]表示法。

然後,我們發現,您需要通過添加$url到方括號[$url]設置的$targets關鍵是$url所以這很容易固定。這給了我們:

$targets[$url] = array(
    CURLOPT_TIMEOUT => 10 
); 
+0

感謝您的貢獻 – datether