cari

Rumah  >  Soal Jawab  >  teks badan

Menambah objek baharu pada nama tatasusunan sedia ada khusus dan menyimpannya menggunakan nilai indeks

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粉006847750P粉006847750224 hari yang lalu407

membalas semua(2)saya akan balas

  • P粉466909449

    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];

    balas
    0
  • P粉743288436

    P粉7432884362024-04-04 14:10:24

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

    array_unshift($array_data, $extra);

    balas
    0
  • Batalbalas