JSON使用法PHP配列をJS配列に変換し、JSはPHP配列をどのように受信するか

3013 ワード

phpファイルを見て$arrという配列を取得すると
foreach ($arr as $value) {
  $json .= json_encode($value) . ',';
} 
echo '[' . substr($json,0,strlen($json) - 1) . ']';

json_Encode()は$arrの各値をjson符号化し、jsonの配列を出力したいので、コンパイルされた各値の後にカンマを付け、最後にすべての値の外に'[]'を付けます.これはjson配列のフォーマットです.各値をjson符号化した後にカンマを付けたので、これにより、最後のすべての値が配列を結合するときにカンマが1つ増え、substr()関数で最後のカンマを削除する必要があります.
そしてjsファイルを見てみましょう
phpファイル転送のjson配列をarrで受信すると
var json = JSON.parse(arr);

JSONは私たちがそのファイルで定義したオブジェクトをダウンロードし始めたので、私たちはそのparse方法でjson配列をjsの配列に変換しました!これは変数jsonが受け入れたjs配列なので直接印刷できません.このjson配列やjson[0]を巡って出力することができます.
実は、php配列をjs配列に変換する考え方は、jsonという中間量を利用して実現することです.もちろんphpとjsだけで配列の変換を実現することもできますが、方法は一つではありません.
PHP配列とJson間の変換
Jsonを使用するのはajaxオブジェクトを使用する場合,プログラムとJS関数の間のデータインタラクションのためであることが多い.JSはPHPの中の配列を知らないので、PHPもJSの中の配列やオブジェクトを知らない.Jsonはこの問題をよく解決した.
Jsonの概要
JSON(JavaScript Object Notation)は、軽量レベルのデータ交換フォーマットです.JavaScriptのサブセットに基づいています.これはJavaScriptがJsonを直接読み取ることができることを意味し、非常に便利です.
Jsonの具体的な形式は:
1.対象
オブジェクトは無秩序な「名前/値」ペアの集合です.オブジェクトは「{」(左かっこ)で始まり、「}」(右かっこ)で終わります.各名前の後に":"(コロン);「,」(カンマ)で区切られた「名前/値」ペア.
例:{"username":"Eric","age":23,"sex":"man"}
コードの例:
  function getUser()
{
  var  user = {
  "username": "Eric",
  "age":23,
  "family": {"mother":"Marry","father":"Alon","brother":"Tom"}
  };  alert( user.username );  alert( user.age );  alert(user.family.brother);
}  getUser();  

2、配列
配列は値(value)の秩序化された集合です.配列は[](左中括弧)で始まり、[](右中括弧)で終わります.値の間に「,」(カンマ)で区切ります.
例えば、[Eric,23,man]
コードの例:
  function getArray() 
{  
var arr = ["Jarry",23, ["www.xiaophper.com","[email protected]"]];  
alert(arr[0]);  alert(arr[1]);  alert(arr[2][0]); 
alert(arr[2][1]);  
}  
getArray();  

注意:オブジェクトと配列の2つの形式はJSの中の呼び出しの时に异なって、オブジェクトは"."呼び出し、配列は下付き[0]、[1]で呼び出されます.また、Json列を渡すときにstringタイプの値を引用符で囲むことにも注意してください.
PHPは配列をJsonに変換する
強力なPHPはすでに内蔵関数を提供しています:json_encode()とjson_decode().わかりやすいjson_Encode()とは,PHP配列をJsonに変換することである.逆にjson_decode()はJsonをPHP配列に変換することである.
例:
$array = array("name" => "Eric","age" => 23); 
echo json_encode($array);

プログラムが印刷されます.
 
 
    
{“name”:”Eric”,”age”:23}

 
次の例を見てみましょう.
$array = array(0 => "Eric", 1 => 23); 
echo json_encode($array);

プログラムが印刷されます:["Eric",23]
以上の2つの例から分かるように、PHP配列のキーが数字であればjson_Encode()は、PHP配列のキーが文字列である場合、配列形式のJsonを返します.ではjson_encode()はオブジェクト形式のJsonを返します.さっき言ったばかりです.両者のjsでの呼び出しは異なる.
実際、PHP配列のキーに文字列形式のキーがある限り、json_encode()はオブジェクト形式のJsonを返します.これは正しくない.なぜなら、PHPコードではエラーは発生しないが、このようなJsonをJS関数に渡すと、JSはこのJsonをオブジェクトとして扱い、オブジェクトは数値を属性名とすることは不可能であるからである.つまりJSはこれが何なのか分からない:user.0.username(中央は数値ゼロ)