對於php,個人感覺能夠熟練操作數組和字符串,基本上已經是入門了,php本身有很多操作數組和字符串的函數,
今天在做一個功能時,需要用Js動態的創建門店信息,這些信息是要從後台添加的,想來想去,通過php讀取數據庫
,得到數組,然後將數組轉化成符合需求js數組,
php數組形式為:[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'))),
);
$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系統)
[php]
$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);
$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,返回數組,執行相逆的過程。