डेटा के लिए नेस्टेड ऐरे बनाएं
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;