Php FOR的逻辑不起作用,我没有发现问题
我有一个逻辑问题,我不知道为什么会发生这种情况,也不知道如何解决它。我有一个JSON文件,我想对值进行更改并将其存储在数组中 JSON文件 PHP代码 但我得到的回报是: 在最后一个数组的电影数组中,不应存在属于第一个数组的键[4]。我看不出问题出在哪里。我的逻辑有什么问题导致它发生,或者如何纠正它。也许是这个问题Php FOR的逻辑不起作用,我没有发现问题,php,for-loop,Php,For Loop,我有一个逻辑问题,我不知道为什么会发生这种情况,也不知道如何解决它。我有一个JSON文件,我想对值进行更改并将其存储在数组中 JSON文件 PHP代码 但我得到的回报是: 在最后一个数组的电影数组中,不应存在属于第一个数组的键[4]。我看不出问题出在哪里。我的逻辑有什么问题导致它发生,或者如何纠正它。也许是这个问题 $values = json_decode(file_get_contents('json_file.json'), true); $news = array(); foreac
$values = json_decode(file_get_contents('json_file.json'), true);
$news = array();
foreach ($values["info"] as $key => $value){
$news[$key]["actress"] = $value["actress"];
$news[$key]["actress-id"] = $value["actress-id"];
$news[$key]["actress-slug"] = $value["actress-slug"];
$movies_array = array();
foreach ($value["week"]["movies"] as $key2 => $value2) {
if($value2["post_status"] == "pending"):
$movies_array[] = array('id' => $value2['id'], 'titulo' => $value2['titulo'], 'post_status' => 'draft', 'category' => $value2['category']);
endif;
}
$news[$key]["week"]["movies"] = $movies_array;
}
var_dump($news);
这很好,而且很有效。但如果有人能解释我的逻辑问题是什么,我还是会留下问题。我仍然不明白为什么我所做的并没有像预期的那样工作,PHP添加了一个不应该存在的键,因为您在每次迭代中对$news使用var_dump,而不刷新它。在第一次迭代中,插入了$news[“week”][“movies”][4],并保留到第二次迭代中-这就是为什么。只需清空$news,就可以了。
$values = json_decode(file_get_contents('json_file.json'), true);
$news = array();
foreach ($values["info"] as $key => $value){
for($i = 0; $i < count($value["week"]["movies"]); $i++){
if($value["week"]["movies"][$i]["post_status"] == "pending"):
$news["actress"] = $value["actress"];
$news["actress-id"] = $value["actress-id"];
$news["actress-slug"] = $value["actress-slug"];
$news["week"]["movies"][$i] = $value["week"]["movies"][$i];
$news["week"]["movies"][$i]["post_status"] = "draft";
endif;
//$news = $news;
}
var_dump($news);
}
array(4) {
["actress"]=>
string(16) "Evan Rachel Wood"
["actress-id"]=>
string(3) "162"
["actress-slug"]=>
string(16) "evan-rachel-wood"
["week"]=>
array(1) {
["movies"]=>
array(5) {
[0]=>
array(4) {
["id"]=>
string(7) "1930500"
["titulo"]=>
string(46) "At imperdiet convallis blandit nisl elementum."
["post_status"]=>
string(5) "draft"
["category"]=>
string(6) "comedy"
}
[1]=>
array(4) {
["id"]=>
string(7) "1930499"
["titulo"]=>
string(40) "Porttitor pellentesque imperdiet rutrum."
["post_status"]=>
string(5) "draft"
["category"]=>
string(5) "drama"
}
[2]=>
array(4) {
["id"]=>
string(7) "1930498"
["titulo"]=>
string(59) "Quam aenean cursus congue vivamus neque luctus libero quam."
["post_status"]=>
string(5) "draft"
["category"]=>
string(19) "adventure"
}
[3]=>
array(4) {
["id"]=>
string(7) "1930497"
["titulo"]=>
string(69) "Sapien ultrices auctor congue enim donec conubia egestas vel senectus"
["post_status"]=>
string(5) "draft"
["category"]=>
string(6) "comedy"
}
[4]=>
array(4) {
["id"]=>
string(7) "1930444"
["titulo"]=>
string(62) "Imperdiet at inceptos condimentum non dictumst primis interdum"
["post_status"]=>
string(5) "draft"
["category"]=>
NULL
}
}
}
}
array(4) {
["actress"]=>
string(14) "Elisabeth Moss"
["actress-id"]=>
string(3) "217"
["actress-slug"]=>
string(14) "elisabeth-moss"
["week"]=>
array(1) {
["movies"]=>
array(5) {
[0]=>
array(4) {
["id"]=>
string(7) "1930443"
["titulo"]=>
string(57) "Rhoncus aliquet proin ut curabitur sit vestibulum feugiat"
["post_status"]=>
string(5) "draft"
["category"]=>
string(9) "adventure"
}
[1]=>
array(4) {
["id"]=>
string(7) "1930442"
["titulo"]=>
string(71) "Mi himenaeos elementum conubia varius porta habitant hendrerit sociosqu"
["post_status"]=>
string(5) "draft"
["category"]=>
string(5) "drama"
}
[2]=>
array(4) {
["id"]=>
string(7) "1930440"
["titulo"]=>
string(56) "Duis massa maecenas platea purus vel arcu duis vulputate"
["post_status"]=>
string(5) "draft"
["category"]=>
string(6) "action"
}
[3]=>
array(4) {
["id"]=>
string(7) "1930393"
["titulo"]=>
string(56) "Elit semper massa fringilla molestie bibendum, hendrerit"
["post_status"]=>
string(5) "draft"
["category"]=>
string(5) "drama"
}
}
}
}
array(4) {
["actress"]=>
string(16) "Evan Rachel Wood"
["actress-id"]=>
string(3) "162"
["actress-slug"]=>
string(16) "evan-rachel-wood"
["week"]=>
array(1) {
["movies"]=>
array(5) {
[0]=>
array(4) {
["id"]=>
string(7) "1930500"
["titulo"]=>
string(46) "At imperdiet convallis blandit nisl elementum."
["post_status"]=>
string(5) "draft"
["category"]=>
string(6) "comedy"
}
[1]=>
array(4) {
["id"]=>
string(7) "1930499"
["titulo"]=>
string(40) "Porttitor pellentesque imperdiet rutrum."
["post_status"]=>
string(5) "draft"
["category"]=>
string(5) "drama"
}
[2]=>
array(4) {
["id"]=>
string(7) "1930498"
["titulo"]=>
string(59) "Quam aenean cursus congue vivamus neque luctus libero quam."
["post_status"]=>
string(5) "draft"
["category"]=>
string(19) "adventure"
}
[3]=>
array(4) {
["id"]=>
string(7) "1930497"
["titulo"]=>
string(69) "Sapien ultrices auctor congue enim donec conubia egestas vel senectus"
["post_status"]=>
string(5) "draft"
["category"]=>
string(6) "comedy"
}
[4]=>
array(4) {
["id"]=>
string(7) "1930444"
["titulo"]=>
string(62) "Imperdiet at inceptos condimentum non dictumst primis interdum"
["post_status"]=>
string(5) "draft"
["category"]=>
NULL
}
}
}
}
array(4) {
["actress"]=>
string(14) "Elisabeth Moss"
["actress-id"]=>
string(3) "217"
["actress-slug"]=>
string(14) "elisabeth-moss"
["week"]=>
array(1) {
["movies"]=>
array(5) {
[0]=>
array(4) {
["id"]=>
string(7) "1930443"
["titulo"]=>
string(57) "Rhoncus aliquet proin ut curabitur sit vestibulum feugiat"
["post_status"]=>
string(5) "draft"
["category"]=>
string(9) "adventure"
}
[1]=>
array(4) {
["id"]=>
string(7) "1930442"
["titulo"]=>
string(71) "Mi himenaeos elementum conubia varius porta habitant hendrerit sociosqu"
["post_status"]=>
string(5) "draft"
["category"]=>
string(5) "drama"
}
[2]=>
array(4) {
["id"]=>
string(7) "1930440"
["titulo"]=>
string(56) "Duis massa maecenas platea purus vel arcu duis vulputate"
["post_status"]=>
string(5) "draft"
["category"]=>
string(6) "action"
}
[3]=>
array(4) {
["id"]=>
string(7) "1930393"
["titulo"]=>
string(56) "Elit semper massa fringilla molestie bibendum, hendrerit"
["post_status"]=>
string(5) "draft"
["category"]=>
string(5) "drama"
}
[4]=>
array(4) {
["id"]=>
string(7) "1930444"
["titulo"]=>
string(62) "Imperdiet at inceptos condimentum non dictumst primis interdum"
["post_status"]=>
string(5) "draft"
["category"]=>
NULL
}
}
}
}
$values = json_decode(file_get_contents('json_file.json'), true);
$news = array();
foreach ($values["info"] as $key => $value){
$news[$key]["actress"] = $value["actress"];
$news[$key]["actress-id"] = $value["actress-id"];
$news[$key]["actress-slug"] = $value["actress-slug"];
$movies_array = array();
foreach ($value["week"]["movies"] as $key2 => $value2) {
if($value2["post_status"] == "pending"):
$movies_array[] = array('id' => $value2['id'], 'titulo' => $value2['titulo'], 'post_status' => 'draft', 'category' => $value2['category']);
endif;
}
$news[$key]["week"]["movies"] = $movies_array;
}
var_dump($news);