用“for”循环填充PHP数组


Filling PHP array with "for" loop

我正在尝试在PHP中填充一个数组,如下所示:

<?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
    )
)

我也尝试将:"$targets="更改为" $targets[] = ",但它会产生以下输出:

[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
    )

可能很容易解决,但我看不到它。有更多知识的人可以指出我的错误吗?

谢谢!

试试这个代码:

$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);

就像将循环体更改为:

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

使用 [] 将数组追加到$targets而不是覆盖。

$targets = array();
for ($i = 0; $i <= $maxPages; $i++) {
  $url = 'http://127.0.0.1/?page='.$i;
  **$targets[]** =  array(
        $url => array(
                CURLOPT_TIMEOUT => 10
        ),
  );
}

使用 target[] 在每个循环中创建一个新数组

因此,

从我们在评论中推断的内容来看:您的第一个问题是您在循环中重新分配$targets变量,而不是使用 [] 表示法附加到数组。

然后我们发现您需要将$targets的键设置为$url,以便通过将$url添加到方括号[$url]中轻松修复。这给了我们:

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