У меня есть массив с именем slideIcons
. Этот массив заполняется внутри цикла Еогеаспа так:массив возвращает значение null за пределами foreach, но имеет значения внутри foreach
$slideIcons = [];
foreach ($data[$key]["icons"] as $icon) {
$slideIcons[] = $icon["preview_url"];
}
Однако, когда я пытаюсь сделать это:
die(var_dump(($slideIcons)
снаружи петли Еогеаспа (после цикла), то напечатанный результат - это пустой массив. Что странно, потому что если я запускаю код вроде этого:
$slideIcons = [];
foreach ($data[$key]["icons"] as $icon) {
$slideIcons[] = $icon["preview_url"];
die(var_dump($slideIcons));
}
Он печатает:
array(1) {
[0]=>
string(54) "https://d30y9cdsu7xlg0.cloudfront.net/png/2300-200.png"
}
Так что, кажется, что переменная $slideIcons
сбрасывается как-то, но я не вижу способом возможного.
Для устранения неполадок я изменил имя переменной на 100% уверен, что она не перезаписывается, но это не изменило результат. Я также попытался заменить
$slideIcons[] = $icon["preview_url"];
для:
array_push($slideIcons, $icon["preview_url"]);
, но это не изменит результат либо. Возможно ли, что по какой-то дикой причине переменная сбрасывается до ее базового значения или я что-то здесь не вижу?
Спасибо.
Edit: Некоторые больше информации, переменная $key
передается на эту функцию от своего родителя, который содержит foreach
петлю. Однако это не имеет значения, поскольку переменная $slideIcons
сохраняется в базе данных до того, как она будет сброшена родительским элементом foreach. Для удобства я включил полную функцию:
private function createSlides($key, $answer, $data)
{
$slideIcons = [];
foreach ($data[$key]["icons"] as $icon) {
$slideIcons[] = $icon["preview_url"];
}
$keywords = $data[$key]['keywords'];
$image_keywords = $data[$key]['image_keywords'];
$images = $data[$key]['images'];
$content = $this->addContent($keywords, $images);
$this->presentation->slides()->create([
'presentation_id' => $this->presentation->id,
'pitch_answer_id' => $answer->id,
'order' => $key,
'keywords' => $keywords,
'image_keywords' => $image_keywords,
'images' => $images,
'icons' => $slideIcons,
'content' => $content
]);
}
И когда я var_dump($data[$key]["icons"])
(до цикла Еогеаспа) это результат:
array(4) {
[0]=>
array(23) {
["attribution"]=>
string(44) "people by Roman J. Sokolov from Noun Project"
["attribution_preview_url"]=>
string(62) "https://d30y9cdsu7xlg0.cloudfront.net/attribution/2300-600.png"
["collections"]=>
array(0) {
}
["date_uploaded"]=>
string(10) "2012-04-26"
["id"]=>
string(4) "2300"
["is_active"]=>
string(1) "1"
["is_explicit"]=>
string(1) "0"
["license_description"]=>
string(28) "creative-commons-attribution"
["nounji_free"]=>
string(1) "0"
["permalink"]=>
string(17) "/term/people/2300"
["preview_url"]=>
string(54) "https://d30y9cdsu7xlg0.cloudfront.net/png/2300-200.png"
["preview_url_42"]=>
string(53) "https://d30y9cdsu7xlg0.cloudfront.net/png/2300-42.png"
["preview_url_84"]=>
string(53) "https://d30y9cdsu7xlg0.cloudfront.net/png/2300-84.png"
}
}
(Есть несколько элементов массива, которые только что один, но они . все имеют одинаковую структуру)
Что вы получаете, если вы 'var_dump ($ data [$ key] [" icons "])'? – GordonM
$ ключ исходит от другого foreach? – Nerea
Если у вас есть другой выбор для вас, вы сбрасываете массив при каждом запуске. – Celoain