對於php,個人感覺能夠熟練運算元組和字串,基本上已經是入門了,php本身有很多運算元組和字串的函數,
今天在做一個功能時,需要用Js動態建立門店資訊,這些資訊是要從後台添加的,想來想去,通過php讀取資料庫
,得到數組,然後將數組轉化成符合需求js數組,
php數組形式為:
$newArray = array(array('地區'=>'北京地區','items'=>'10','detail'=>array(0=>array('店名'=>'旗艦店','url'=>'http://www.'),1=>array('店名'=>'jjjj','url'=>'http://www.fdd'))), array('地區'=>'上海地區','items'=>'11','detail'=>array(0=>array('店名'=>'旗艦店','url'=>'http://www.'),1=>array('店名'=>'jjjj','url'=>'http://www.fdd'))), );
這裡用的一個很方便的函數:json_encode();
var jsarray = new Array();
jsarray = <?php echo json_encode($newwarr);?>;
用console.log();可以看到jsarray的結構。
在這裡如何構造這樣一個符合要求的php數組呢?(我用的是phpcms系統)
$sql= 'select catid,catname,items from category where parentid=10'; $result = mysql_query($sql); while ($row = mysql_fetch_array($result)) { $arrArea['地區'] = $row['catname']; $arrArea['items'] = $row['items']; unset($arrArea['detail']);//這一步很關鍵,要不得出的資訊就會累加。 $sql2 = 'select title,url from news where catid='.$row['catid']; $fendian = mysql_query($sql2); while ($re=mysql_fetch_assoc($fendian)) { $item['店名']=$re['title']; $item['url']=$re['url']; $arrArea['detail'][] = $item; } $newwarr[]=$arrArea; } var_dump($newwarr);
json_encode:對變數進行 JSON 編碼,該函數只能接受 UTF-8編碼的資料 .
相對應的還有json_decode,第二個參數為true,返回數組,執行相逆的過程。
json只能用對象和數組。