js 形式のデータへのデータ変換は、特に ajax でデータを json に変換してから再度変換するためによく使用される方法です。以下の例を見てみましょう。
コードは次のとおりです |
コードをコピー |
関数 array_to_json($array) {
if (! is_array ( $array )) {
false を返します;
}
$associative = count ( array_diff ( array_keys ( $array ), array_keys ( array_keys ( $array ) ) ) );
if ($associative) {
$construct = array();
foreach ( $array as $key => $value ) {
// まず、各キーと値のペアをステージング配列にコピーします
// 各キーと値を適切にフォーマットします。
// キーをフォーマットします:
if (is_numeric ( $key )) {
$key = "key_$key";
}
$key = """ .addlashes ( $key ) .""";
// 値をフォーマットします:
if (is_array ( $value )) {
$value = array_to_json ( $value );
} else if (! is_numeric ( $value ) || is_string ( $value )) {
$value = """ .addslashes ( $value ) . """;
}
// ステージング配列に追加:
$construct [] = "$key: $value";
}
// 次に、ステージング配列を JSON 形式に折りたたみます:
$result = "{" .implode ( ",", $construct ) .
} else { // 配列がベクトル (結合ではない) の場合:
$construct = array();
foreach ( $array as $value ) {
// 値をフォーマットします:
if (is_array ( $value )) {
$value = array_to_json ( $value );
} else if (! is_numeric ( $value ) || is_string ( $value )) {
$value = """ .addlashes ( $value ) . """;
}
// ステージング配列に追加:
$construct [] = $value;
}
// 次に、ステージング配列を JSON 形式に折りたたみます:
$result = "[" . implode ( ", ", $construct ) .
}
$result を返します;
}
|
これを試してから、json_encode を上記の関数に置き換えて、正しく動作するかどうかを確認できます
コードは次のとおりです
コードをコピー |
|
if($_GET['enews']=='ok'){
echo json_encode(array('a'=>'Wang Jin'));exit;
}
?>
|
phpのjson_encodeについて
json_encode() は、さまざまなタイプの PHP 変数を対応する JSON 文字列に変換します。
$オプション = 0])
PHP 5.3.0
JSON_HEX_QUOT: すべての二重引用符 (") を u0022 に変換します。
// コード例:
コードは次のとおりです
コードをコピー |
|
$data = '"';
echo json_encode($data); // """
echo json_encode($data, JSON_HEX_QUOT);
|
// "u0022"■JSON_HEX_TAG: すべての大なり記号 (>) を u003E に変換し、
を置き換えます
すべての小なり記号 (<) は u003C に変換されます。
JSON_HEX_AMP: すべてのアンパサンド (&) を u0026 に変換します。
JSON_HEX_APOS: すべての一重引用符 (’) を u0027 に変換します。
JSON_FORCE_OBJECT: 値が非連想配列の場合、出力結果を強制的に JSON オブジェクトにします。受信側がデータをオブジェクトにし、値を空の配列にする必要がある場合
使用します。
// コード例:
コードは次のとおりです
コードをコピー |
|
$data = 配列();
echo json_encode($data); // [];
echo json_encode($data, JSON_FORCE_OBJECT); // {}
|
PHP 5.3.3
JSON_NUMERIC_CHECK: 数値文字列を数値としてエンコードします。
PHP 5.4.0
JSON_BIGINT_AS_STRING: 大きな整数を元の文字列値としてエンコードします。PHP 以降で使用可能です
。
5.4.0.
JSON_PRETTY_PRINT: 返されたデータの空白を使用してフォーマットします。PHP 5.4.0 以降で利用可能です。
JSON_UNESCAPED_SLASHES: / をエスケープしないでください。PHP 5.4.0 以降で使用可能です。
JSON_UNESCAPED_UNICODE: マルチバイト Unicode 文字をリテラルにエンコードします (デフォルトは uXXXX としてエスケープします)。
PHP 5.4.0以降で利用可能
http://www.bkjia.com/PHPjc/445290.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445290.html技術記事 js 形式のデータへのデータ変換は、特に ajax でデータを json に変換してから再度変換するためによく使用される方法です。以下の例を見てみましょう。 コードは次のようなものです...