Ich weiß, dass der beste Weg wahrscheinlich darin besteht, das neue Objekt am Ende des vorhandenen Arrays ohne Namen zu speichern, aber ich möchte es etwas komplizierter machen, um zu lernen, wie man das macht und es auf dem Indexwert [0] hat. des Arrays anstelle des Endes [ arr.length - 1] und ich muss es unter einem bestimmten Array-Namen speichern, da ich in diesem Beispiel mehrere Arrays haben werde. Informationen werden durch HTML-Formulare gesammelt.
Was ich habe ist:
<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { function get_data() { $file_name='newsFeeder'. '.json'; if(file_exists("./feeder/{$file_name}")) { $current_data=file_get_contents("./feeder/{$file_name}"); $array_data=json_decode($current_data, true); $extra=array( 'year' => $_POST['year'], 'link' => $_POST['link'], 'img' => $_POST['img'], ); $array_data[]=$extra; echo "file exist<br/>"; return json_encode($array_data, JSON_PRETTY_PRINT); } else { $datae=array(); $datae[]=array( 'year' => $_POST['year'], 'link' => $_POST['link'], 'img' => $_POST['img'], ); echo "file not exist<br/>"; return json_encode($datae, JSON_PRETTY_PRINT); } } $file_name='newsFeeder'. '.json'; if(file_put_contents("./feeder/{$file_name}", get_data())) { echo 'success'; } else { echo 'There is some error'; } } ?>
Das Ergebnis ist eine JSON-Datei wie diese:
[ { "year": "2022", "link": "xxxxxx_01.html", "img": "xxxxxx_01.webp" }, { "year": "2023", "link": "xxxxxx_02.html", "img": "xxxxxx_02.webp" }, . . . . { // <- 这是在索引值[arr.length - 1]处添加的最新对象 // "year": "2024", "link": "xxxxxx_03.html" } ]
Aber was ich erreichen möchte, ist Folgendes:
{ "newsFeeder": [ // <- 这是我需要添加新对象的数组 // { // <- 这是在索引值[0]处添加的最新对象 // "year": "2024", "link": "xxxxxx_06.html", "img": "xxxxxx_06.webp" }, . . . . { "year": "2023", "link": "xxxxxx_02.html", "img": "xxxxxx_02.webp" }, { "year": "2022", "link": "xxxxxx_01.html", "img": "xxxxxx_01.webp" } ], "whyComplicate_things":[ // 我需要保持此数组不变 // {"a":"01.webp", "title":"title 01"}, {"a":"02.webp", "title":"title 02"}, {"a":"03.webp", "title":"title 03"} ] }
Ich habe verschiedene Methoden ausprobiert, aber diese Methoden löschen einfach alles und fügen nur die gesammelten Informationen hinzu, oder am Ende geht etwas kaputt. Ich hoffe, das hilft mir zu lernen, wie ich dieses Ziel erreichen kann!
要将元素添加到数组的开头,如果使用的是 PHP > 7.4,则可以使用
, ...$array_name
进行追加。类似于以下代码:
你可以使用
array_unshift
来实现这个功能。它将所有数组元素向后移动一位,并在函数调用的第一个参数的索引0
处插入第二个参数。