ช่วยดูเกี่ยวกับ json_decode ให้หน่อยครับ พอนำมาเเปลงเป็น array กลับเเสดงข้อมูลไม่ถูกต้อง
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ช่วยดูเกี่ยวกับ json_decode ให้หน่อยครับ พอนำมาเเปลงเป็น array กลับเเสดงข้อมูลไม่ถูกต้อง
ช่วยดูเกี่ยวกับ json_decode ให้หน่อยครับ พอนำมาเเปลงเป็น array กลับเเสดงข้อมูลไม่ถูกต้อง
ผมจะลองเขียนเว็ปเกี่ยวกับการตรวจสอบไวรัส covid19 โดยได้มีการดึง api จากเว็ปนึงมา เป็นแบบ json พอนำมาเเปลง เป็น array ด้วย json_decode เเต่พอทำการ echo เพื่อเเสดงข้อมูลของเเต่ละฟิว มันกลับดึงข้อมูลจากทุกฟิว ดึงมาเฉพาะข้อมูลตัวหน้า มาเเสดงรวมกัน ซึ่งไม่เเน่ใจว่า ผมเขียนอะไรผิดหรือเปล่า รบกวนแก้ไขให้หน่อยครับ
ส่วนนี้เป็น array ของข้อมูล
ข้อมูลที่เเสดง => 178432
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?php $curl = curl_init(); curl_setopt_array( $curl , array ( CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_ENCODING => "" , CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET" , CURLOPT_HTTPHEADER => array ( "x-rapidapi-host: coronavirus-monitor.p.rapidapi.com" , "x-rapidapi-key: 2c0355e97emsh0da41a8dca40badp1fe9fdjsnf2510cc296b0" ), )); $response = curl_exec( $curl ); $err = curl_error( $curl ); curl_close( $curl ); if ( $err ) { echo "cURL Error #:" . $err ; } else { echo $response ; } $html = json_decode( $response ,true); ?> <div class = "container" > <div class = "row" > <div class = "col-md-3" > <ul class = "social-icons" > <?php foreach ( $html AS $k => $v ) { echo $v [ 'total_cases' ]; } ?> </ul> </div> </div> </div> |
1 2 | Array ( [total_cases] => 186,670 [total_deaths] => 7,468 [total_recovered] => 80,338 [new_cases] => 4,230 [new_deaths] => 321 [statistic_taken_at] => 2020-03-17 11:40:03 ) |

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
ศึกษาการใช้งาน Array ใน PHP พื้้นฐานเพิ่มเติม
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?php $curl = curl_init(); curl_setopt_array( $curl , array ( CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_ENCODING => "" , CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET" , CURLOPT_HTTPHEADER => array ( "x-rapidapi-host: coronavirus-monitor.p.rapidapi.com" , "x-rapidapi-key: 2c0355e97emsh0da41a8dca40badp1fe9fdjsnf2510cc296b0" ), )); $response = curl_exec( $curl ); $err = curl_error( $curl ); curl_close( $curl ); if ( $err ) { echo "cURL Error #:" . $err ; } else { echo $response ; } $html = json_decode( $response ,true); echo "<pre>" ; print_r( $html ); // ดูโครงสร้าง array echo "</pre>" ; ?> <div class = "container" > <div class = "row" > <div class = "col-md-3" > <ul class = "social-icons" > <?php // วนลูปแสดงข้อมูล array แสดง key และ value foreach ( $html as $k => $v ) { echo $k . " - " .trim( $v ). "<br>" ; } ?> </ul> </div> </div> </div> |
ข้อมูล string หรือที่เรียกว่า JSON String data ที่ได้กลับมา
มีรูปแบบเป็น JSON object
1 | {"total_cases":"188,383","total_deaths":"7,499","total_recovered":"80,848","new_cases":"5,940","new_deaths":"352","statistic_taken_at":"2020-03-17 13:34:04"} |
หลังจากเราแปลงเป็น array ใน php ด้วย json_decode() พร้อมกับ parameter ตัวที่สองเป็น true
จะได้ตัวแปร array เช่นเรากำหดนเป็น $html ก็จะสามารถอ้างอิงตัวแปรจาก
1 2 3 4 5 6 7 8 9 | Array ( [total_cases] => 188,383 [total_deaths] => 7,499 [total_recovered] => 80,848 [new_cases] => 5,940 [new_deaths] => 352 [statistic_taken_at] => 2020-03-17 13:34:04 ) |
ก็จะได้เป็น
1 | echo $html [ 'total_cases' ]; // มีค่าเท่ากับ 188,383 |
สามารถนำไปใช้งานตามแต่ละ key ได้เลย
แต่ถ้าสมมติ เราได้ข้อมูล JSON String data มาในรูปแบบ Array Object เช่น
1 2 | [{"total_cases":"188,383","total_deaths":"7,499","total_recovered":"80,848","new_cases":"5,940","new_deaths":"352","statistic_taken_at":"2020-03-17 13:34:04"}, {"total_cases":"188,383","total_deaths":"7,499","total_recovered":"80,848","new_cases":"5,940","new_deaths":"352","statistic_taken_at":"2020-03-17 13:34:04"}] |
เราจะได้ array เป็นแบบ สองมิติ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Array ( [0] => Array ( [total_cases] => 188,383 [total_deaths] => 7,499 [total_recovered] => 80,848 [new_cases] => 5,940 [new_deaths] => 352 [statistic_taken_at] => 2020-03-17 13:34:04 ) [1] => Array ( [total_cases] => 188,383 [total_deaths] => 7,499 [total_recovered] => 80,848 [new_cases] => 5,940 [new_deaths] => 352 [statistic_taken_at] => 2020-03-17 13:34:04 ) ) |
กรณีที่สองนี้ เราสามารถใช้คำสั่ง foreach() แทนได้

ขอบคุณทุกการสนับสนุน
![]()