Fügt einem bestimmten vorhandenen Array-Namen ein neues Objekt hinzu und speichert es unter Verwendung des Indexwerts
P粉006847750
P粉006847750 2024-04-03 19:43:33
0
2
434

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!

P粉006847750
P粉006847750

Antworte allen(2)
P粉466909449

要将元素添加到数组的开头,如果使用的是 PHP > 7.4,则可以使用 , ...$array_name 进行追加。

类似于以下代码:

$array_name = [array(
    'year' => $_POST['year'],
    'link' => $_POST['link'],
    'img' => $_POST['img']
), ...$array_name];
P粉743288436

你可以使用array_unshift来实现这个功能。它将所有数组元素向后移动一位,并在函数调用的第一个参数的索引0处插入第二个参数。

array_unshift($array_data, $extra);
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage