|

Menambahkan array baru pada object array

Save or share to

Kotakode.com | Komunitas Developer Indonesia by lawlieth (kotakode.com)

Artikel ini merupakan jawaban saya terhadap salah satu pertanyaan pada situs Kotakode.com, sebuah forum dan komunitas para developer di Indonesia. Lihat pertanyaan asli

Pertanyaan

Saya punya list data berdasarkan tahun, dimana list data tersebut dicek apakah list data tersebut setiap tahun ada datanya atau tidak… jika list data tersebut tidak ada data.nya, maka tambahkan object baru… ini codingannya saya :

$data = [
    [
        'hak' => '12',
        'tambahan' => '6',
        'sisa' => '12',
        'tahun' => '2019'
    ],
    [
        'hak' => '12',
        'tambahan' => '6',
        'sisa' => '12',
        'tahun' => '2021'
    ]
];
$tahun = [
    '2019',
    '2020',
    '2021'
];
for($i=0;$i<count($tahun);$i++){
    $tahun == $tahun[$i];
    $filterData = array_filter($data, function($entry) {
        global $tahun;
        return $entry['tahun'] == $tahun;
    } );
    $newdata = [
        'hak' => '12',
        'tambahan' => '0',
        'sisa' => '0',
        'tahun' => $tahun
    ];
    if(count($filterData)==0){
        $data = array_push($newdata);
    }
}
return $data;

Hasil yang diinginkan seperti ini:

[ { hak: '12', tambahan: '6', sisa: '12', tahun: '2019' },
  { hak: '12', tambahan: '0', sisa: '0', tahun: '2020' },
  { hak: '12', tambahan: '6', sisa: '12', tahun: '2021' } ]

Tetapi setelah saya jalankan codinganya, muncul error seperti ini : array_filter() expects parameter 1 to be array, null given


Jawaban

Halo, kalau saya lihat kamu salah menggunakan array_push():

$data = array_push($newdata);

cara yang benar untuk memakainya adalah

array_push($data, $newdata);

karena fungsi array_push() akan mengembalikan return value berupa jumlah isi di dalam array yang sudah dimerge, bukan array yang sudah digabungkan tersebut. Makanya muncul error itu.


Thanks for reading this article! By the way, we’re also working on finishing these interesting posts. Revisit this site soon or follow us to see them once they’re published!

[display-posts post_status=”future” include_link=”false” wrapper_id=”future-list”]

Save or share to

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *