Rumah > Soal Jawab > teks badan
Saya tahu cara terbaik mungkin adalah untuk menyimpan objek baharu pada penghujung tatasusunan sedia ada tanpa nama, tetapi saya mahu menjadikannya lebih rumit untuk mempelajari cara melakukan ini dan memilikinya pada nilai indeks [0] daripada tatasusunan bukannya hujung [ arr.length - 1] dan saya perlu menyimpannya dalam nama tatasusunan tertentu kerana saya akan mempunyai berbilang tatasusunan dalam contoh ini. Maklumat dikumpul oleh borang HTML.
Apa yang saya ada ialah:
<?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'; } } ?>
Hasilnya ialah fail JSON seperti ini:
[ { "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" } ]
Tetapi apa yang saya ingin capai ialah ini:
{ "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"} ] }
Saya mencuba kaedah yang berbeza, tetapi kaedah itu hanya mengosongkan segala-galanya dan hanya menambah maklumat yang dikumpul, atau akhirnya memecahkan perkara. Harap ini membantu saya belajar bagaimana untuk mencapai matlamat ini!
P粉4669094492024-04-04 18:47:26
Untuk menambah elemen pada permulaan tatasusunan, jika anda menggunakan PHP > anda boleh menggunakan , ...$array_name
untuk menambah.
Serupa dengan kod berikut:
$array_name = [array( 'year' => $_POST['year'], 'link' => $_POST['link'], 'img' => $_POST['img'] ), ...$array_name];
P粉7432884362024-04-04 14:10:24
Anda boleh memasukkan parameter kedua menggunakan array_unshift
来实现这个功能。它将所有数组元素向后移动一位,并在函数调用的第一个参数的索引0
.
array_unshift($array_data, $extra);