Buat Array Bersarang untuk data
Saya menjalankan beberapa kueri SQL untuk mendapatkan data dan kemudian saya menambahkannya ke dalam array. Saya mencoba untuk mencapai data dalam array bersarang. Karena tabel sekolah mengembalikan beberapa data untuk tabel pengguna.
Ini kodenya.
$res=array(); $data = $mysqli->prepare("SELECT name, rollno, pic from `users` as a and a.uid = ?"); $data ->bind_param("i", $uid); $data->execute();
$data->store_result(); $data->bind_result($name, $rollno, $pic); if($data->num_rows != 0){
while ($data->fetch()){ $name = $name; $rollno = $rollno; $pic = $pic; $res['content'][] = array(
"name" => $name, "rollno" => $rollno,
"pic" => $pic ); $sdata = $mysqli->prepare("SELECT a.uid, a.class, a.subject, a.board from `school` as a and a.uid = ?"); $sdata ->bind_param("i", $uid); $sdata->execute();
$sdata->store_result(); $sdata->bind_result( $uid, $class, $subject, $board);
if($sdata->num_rows != 0){ while ($sdata->fetch()){
$uid = $uid;
$class = $class;
$subject = $subject;
$board = $board;
$res['content']['pricing'][] = array( "uid" => $uid,
"class" => $class, "subject" => $subject,
"board" => $board
);
}
}
}
}
Metode di atas memberi saya keluaran seperti ini.
Array
(
[content] => Array
(
[0] => Array
(
[name] => Test User1
[rollno] => 9
[pic] => 9_1599452969.jpg
)
[1] => Array
(
[name] => Test User2
[rollno] => 8
[pic] => 8_1599452969.jpg
)
[pricing] => Array
(
[0] => Array
(
[uid] => 8
[class] => 2
[subject] => Math
[board] => CBSE
)
[1] => Array
(
[uid] => 8
[class] => 2
[subject] => Science
[board] => CBSE
)
[2] => Array
(
[uid] => 9
[class] => 2
[subject] => Science
[board] => CBSE
)
[3] => Array
(
[uid] =>9
[class] => 2
[subject] => English
[board] => CBSE
)
[4] => Array
(
[uid] => 9
[class] => 2
[subject] => Math
[board] => CBSE
)
)
)
)
Seperti yang Anda lihat, data array harga akan datang setelah data Konten. Saya ingin berada di baris yang sama dengan cara bersarang.
Array
(
[content] => Array
(
[0] => Array
(
[name] => Test User1
[rollno] => 9
[pic] => 9_1599452969.jpg
[Pricing][0] => Array
(
[uid] => 9
[class] => 2
[subject] => Science
[board] => CBSE
)
[1] => Array
(
[uid] =>9
[class] => 2
[subject] => English
[board] => CBSE
)
[2] => Array
(
[uid] => 9
[class] => 2
[subject] => Math
[board] => CBSE
)
)
[1] => Array
(
[name] => Test User2
[rollno] => 8
[pic] => 8_1599452969.jpg
[pricing][0] => Array
(
[uid] => 8
[class] => 2
[subject] => Math
[board] => CBSE
)
[1] => Array
(
[uid] => 8
[class] => 2
[subject] => Science
[board] => CBSE
)
)
[pricing] => Array
(
)
)
)
Jawaban
Pendekatan paling sederhana adalah membuat array sementara, memberinya makan dengan semua data dan kemudian menambahkannya $res. Jadi, bukan
$res['content'][] = array(
"name" => $name, "rollno" => $rollno,
"pic" => $pic
);
melakukan
$tmp = array(
"name" => $name, "rollno" => $rollno,
"pic" => $pic
);
Kemudian tambahkan harga untuk itu - alih-alih
$res['content']['pricing'][] = array(
"uid" => $uid, "class" => $class,
"subject" => $subject, "board" => $board
);
tambahkan ke array sementara
$tmp['pricing'][] = array( "uid" => $uid,
"class" => $class, "subject" => $subject,
"board" => $board
);
Dan terakhir, sebelum melakukan iterasi lain dari loop utama tambahkan ke $res
$res['content'][] = $tmp;