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.
Leave a Reply