Maison > Questions et réponses > le corps du texte
Je sais que le meilleur moyen est probablement de sauvegarder le nouvel objet à la fin du tableau existant sans nom, mais je veux rendre les choses un peu plus compliquées pour apprendre à faire cela et l'avoir à la valeur d'index [0] du tableau au lieu de la fin [ arr.length - 1] et je dois l'enregistrer sous un nom de tableau spécifique car j'aurai plusieurs tableaux dans cet exemple. Les informations sont collectées par des formulaires HTML.
Ce que j'ai c'est :
<?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'; } } ?>
Le résultat est un fichier JSON comme celui-ci :
[ { "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" } ]
Mais ce que je veux réaliser, c'est ceci :
{ "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"} ] }
J'ai essayé différentes méthodes, mais ces méthodes effacent tout et n'ajoutent que les informations collectées, ou finissent par casser des choses. J'espère que cela m'aidera à apprendre comment atteindre cet objectif !
P粉4669094492024-04-04 18:47:26
Pour ajouter un élément au début d'un tableau, si vous utilisez PHP > 7.4, vous pouvez utiliser , ...$array_name
pour l'ajouter.
Similaire au code suivant :
$array_name = [array( 'year' => $_POST['year'], 'link' => $_POST['link'], 'img' => $_POST['img'] ), ...$array_name];
P粉7432884362024-04-04 14:10:24
Vous pouvez insérer le deuxième paramètre en utilisant array_unshift
来实现这个功能。它将所有数组元素向后移动一位,并在函数调用的第一个参数的索引0
.
array_unshift($array_data, $extra);