สร้าง Nested Array สำหรับข้อมูล
Sep 26 2020
ฉันกำลังเรียกใช้แบบสอบถาม SQL เพื่อรับข้อมูลจากนั้นฉันกำลังเพิ่มลงในอาร์เรย์ ฉันพยายามบรรลุข้อมูลในอาร์เรย์ที่ซ้อนกัน เนื่องจากตารางโรงเรียนกำลังส่งคืนข้อมูลหลายรายการสำหรับตารางผู้ใช้
นี่คือรหัส
$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
);
}
}
}
}
วิธีการด้านบนให้ผลลัพธ์แบบนี้
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
)
)
)
)
ดังที่คุณเห็นข้อมูลอาร์เรย์การกำหนดราคามาหลังจากข้อมูลเนื้อหา ฉันต้องการให้มันอยู่ในแนวเดียวกันในลักษณะที่ซ้อนกัน
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
(
)
)
)
คำตอบ
1 MarcinOrlowski Sep 26 2020 at 11:10
$resวิธีที่ง่ายที่สุดที่จะสร้างอาร์เรย์ชั่วคราวอาหารมันมีข้อมูลทั้งหมดแล้วเพิ่ม ดังนั้นแทนที่จะเป็น
$res['content'][] = array(
"name" => $name, "rollno" => $rollno,
"pic" => $pic
);
ทำ
$tmp = array(
"name" => $name, "rollno" => $rollno,
"pic" => $pic
);
จากนั้นเพิ่มการกำหนดราคา - แทนที่จะเป็น
$res['content']['pricing'][] = array(
"uid" => $uid, "class" => $class,
"subject" => $subject, "board" => $board
);
เพิ่มลงในอาร์เรย์ชั่วคราว
$tmp['pricing'][] = array( "uid" => $uid,
"class" => $class, "subject" => $subject,
"board" => $board
);
และสุดท้ายก่อนที่จะทำการวนซ้ำหลักอีกครั้งให้เพิ่มเข้าไป $res
$res['content'][] = $tmp;