Menambah objek baharu pada nama tatasusunan sedia ada khusus dan menyimpannya menggunakan nilai indeks
P粉006847750
P粉006847750 2024-04-03 19:43:33
0
2
433

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粉006847750
P粉006847750

membalas semua(2)
P粉466909449

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粉743288436

Anda boleh memasukkan parameter kedua menggunakan array_unshift来实现这个功能。它将所有数组元素向后移动一位,并在函数调用的第一个参数的索引0.

array_unshift($array_data, $extra);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan