用 "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
)
)
可能很容易修复,但我看不到它。
有知道的人可以指出我的错误吗?
谢谢!
就像将循环体更改为一样简单:
$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
),
);
}
使用 targets[] 每次循环创建一个新数组
因此,根据我们在评论中的推断:您的第一个问题是您在循环中重新分配 $targets
变量,而不是使用 []
表示法附加到数组。
然后我们发现您需要将 $targets
的键设置为 $url
,这样可以通过在方括号 [$url]
中添加 $url
轻松解决。这给了我们:
$targets[$url] = array(
CURLOPT_TIMEOUT => 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);
我正尝试在 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
)
)
可能很容易修复,但我看不到它。 有知道的人可以指出我的错误吗?
谢谢!
就像将循环体更改为一样简单:
$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
),
);
}
使用 targets[] 每次循环创建一个新数组
因此,根据我们在评论中的推断:您的第一个问题是您在循环中重新分配 $targets
变量,而不是使用 []
表示法附加到数组。
然后我们发现您需要将 $targets
的键设置为 $url
,这样可以通过在方括号 [$url]
中添加 $url
轻松解决。这给了我们:
$targets[$url] = array(
CURLOPT_TIMEOUT => 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);