Заполнение массива PHP с помощью цикла for
Я пытаюсь заполнить массив в 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
)
)
Я также попытался изменить: " $target =" на "$ target [] = ", однако он выдает следующее:
[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
)
)
Возможно, это легко исправить, но я не могу этого увидеть. Может ли кто-то с большим знанием указать мне на мою ошибку?
Спасибо!
5 ответов
Попробуйте этот код:
$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
переменная в цикле, а не добавление в массив с помощью []
нотации.
Затем мы обнаружили, что вам нужно установить ключ $targets
быть $url
так что это легко исправить, добавив $url
в квадратные скобки [$url]
, Что дает нам:
$targets[$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[] = array( // <-- NOTE THE []
$url => array(
CURLOPT_TIMEOUT => 10
),
);