• หน้าแรก
  • บทความเกี่ยวกับการช๊อปปิ้ง
  • คลิปวิดีโอ
  • ทีวีออนไลน์
  • รวมเกม เกมส์มากมาย
  • แบ่งปันความรู้
  • สารบัญเว็บไซต์
  • โลกใบเล็กของเราทุกคน
  • คุยสด แชท เว็บบอร์ด
  • ติดต่อเรา

PHP

อ่านข้อมูล Array จาก JSON ไฟล์ ด้วย PHP ( 20 พฤษภาคม 2553 )


ในไฟล์ JSON มีการเก็บข้อมูลในแบบ Array ด้วยเหมือนกัน ซึ่งเมื่่อตอนที่แล้วเราได้ดูวิธีการเรียกใช้ข้อมูลใน JSON ไฟล์แบบโดยตรงมาแล้ว

สำหรับวันนี้เราจะมาดูวิธีในการเรียกใช้ข้อมูลใน JSON ไฟล์ที่มีการเก็บข้อมูลแบบ Array ไว้นะครับ

ไฟล์ data3.json

{
    "controls": [
        [
            "fire", 
            "na"
        ], 
        [
            "jump", 
            "na"
        ], 
        [
            "movement", 
            "mouse"
        ]
    ],
    "tags": [
        "sudoku", 
        "sudoku 24", 
        "puzzle", 
        "puzzles", 
        "puzzlepond"
    ],
    "category": "Puzzles",
    "control_scheme": "{\"fire\": \"na\", \"jump\": \"na\", \"movement\": \"mouse\"}"
}

จากด้านบนข้อมูลที่อยู่ในรูปแบบ Array คือข้อมูลที่อยู่ใน [ ] ครับ มาดู code php กัน มาดูวิธีแบบเข้าถึงข้อมูลโดยตรง

<?
$json = file_get_contents('data3.json'); 
$data = json_decode($json);
for ($i=0;$i<3;$i++){
$x1 = $data->controls[$i][0];
$x2 = $data->controls[$i][1];
echo $x1."=".$x2;
echo "<br />";
}

/* แสดงผลออกมาดังนี้
fire=na
jump=na
movement=mouse
*/
?>

อีกวิธีเป็นการแปลงข้อมูลใน JSON ให้อยู่ในรูปแบบ Array ของ PHP ก่อนนำไปใช้งานอีกทีครับ

<?
function json_code ($json) { 
//remove curly brackets to beware from regex errors เป็นฟังชั่นสำหรับแปรข้อมูลแบบ JSON ออกมาอยู่ในรูปแบบ Array ครับ

$json = substr($json, strpos($json,'{')+1, strlen($json));
$json = substr($json, 0, strrpos($json,'}'));
$json = preg_replace('/(^|,)([\\s\\t]*)([^:]*) (([\\s\\t]*)):(([\\s\\t]*))/s', '$1"$3"$4:', trim($json));

return json_decode('{'.$json.'}', true);
} 

$test1 = file_get_contents('data3.json'); // อ่านข้อมูล JSON
$jarr = json_code($test1); // แปลงข้อมูล JSON ให้อยู่ในรูปแบบ Array
print_r($jarr); // ให้พิมพ์ค่า Array ออกมาดู

/* แสดงผลออกมาดังนี้
Array ( [controls] => Array ( [0] => Array ( [0] => fire [1] => na ) [1] => Array ( [0] => jump [1] => na ) [2] => Array ( [0] => movement [1] => mouse ) ) [tags] => Array ( [0] => sudoku [1] => sudoku 24 [2] => puzzle [3] => puzzles [4] => puzzlepond ) [category] => Puzzles [control_scheme] => {"fire": "na", "jump": "na", "movement": "mouse"} ) 
*/

echo "<br />";
while (list($key) = each($jarr)) { // ทำการ list ค่า key ของ Array ทั้งหมดออกมา
	echo "=================<br />";
	echo "$key <BR />";
	echo "=================";
	echo "<br />";
	$count = count($jarr[$key]); // นับจำนวนแถวที่เก็บไว้ใน Array ใน key นั้นๆ
	if ($count>1){ 
		for ($i=0;$i<$count;$i++) {
			echo $jarr[$key][$i]; // พิมพ์ค่าที่ถูกเก็บไว้ในแต่ละแถวของ key นั้นๆ
			echo "<br />";
		}
	} else {
		echo $jarr[$key]; // กรณีค่าที่เก็บไว้มีเพียงค่าเดียว
		echo "<br />";
	}
}

/* แสดงผลออกมาดังนี้
=================
controls
=================
Array
Array
Array
=================
tags
=================
sudoku
sudoku 24
puzzle
puzzles
puzzlepond
=================
category
=================
Puzzles
=================
control_scheme
=================
{"fire": "na", "jump": "na", "movement": "mouse"}
*/
?>

จะเห็นได้ว่าใน controls ค่าที่ถูกเก็บไว้เป็น Array อีกทีหนึ่ง เมื่อสั่งพิมพ์ค่าออกมาจึงยังไม่แสดงผลที่ถูกต้อง

 

หมายเหตุ

อ่านเพิ่มเติมความเข้าใจเกี่ยวกับ Array ใน PHP ได้ที่ www.worldphp.com

Tag :: Array, JSON, PHP
เข้าชมแล้ว :: 13779 ครั้ง | กลับหน้าหลัก