PHPとJavaScriptの連携に不可欠な、それぞれに配列を渡す方法です。
PHPからJavaScript
PHPからJavaScriptへ配列を渡すには、JSONデータに変換する必要があり、json_encode関数を使用する。
json_encode()
<?php
$array = ['data01','data02','data03','data04','data05']; //配列
$json = json_encode($array); //JSONに変換
?>
<script>
console.log(<?php echo $json; ?>);
</script>
実行結果|JavaScript
(5) ['data01', 'data02', 'data03', 'data04', 'data05']
0: "data01"
1: "data02"
2: "data03"
3: "data04"
4: "data05"
length: 5
[[Prototype]]: Array(0)
JavaScriptからPHP
反対に、JavaScript(JSONデータ)からPHPへ配列を渡すには、json_decode関数を使用して、JSONデータを配列に変換する。
json_decode()
<?php
$json = '["data01","data02","data03","data04","data05"]'; //JSONデータ
$array = json_decode($json); //配列に変換
var_dump($array);
?>
実行結果|PHP
array(5) {
[0]=>
string(6) "data01"
[1]=>
string(6) "data02"
[2]=>
string(6) "data03"
[3]=>
string(6) "data04"
[4]=>
string(6) "data05"
}
それぞれのオプション
json_decode関数、 json_decode関数には、どちらも引数でオプションを指定する。
オプションは「 | 」で複数指定可能。
記載の無い、その他のオプションは 公式 ( PHP: Hypertext Preprocessor ) 、PHP: 定義済み定数 – Manualよりご確認ください。
json_encode関数のよく使用するオプション
- オプション
- 説明
- JSON_PRETTY_PRINT
- 返される結果の書式を、スペースを使って整える
- JSON_UNESCAPED_SLASHES
- 「 / 」 をエスケープしない
- JSON_UNESCAPED_UNICODE
- マルチバイト Unicode 文字をそのままの形式で扱う (デフォルトでは \uXXXX にエスケープする)
$array = json_encode($array ,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
json_decode関数のよく使用するオプション
- オプション
- 説明
- JSON_OBJECT_AS_ARRAY
- JSON オブジェクトを PHP の配列としてデコードする
※第二引数を true に設定して呼び出すことで、自動的に設定できる
$json = json_decode($json ,JSON_OBJECT_AS_ARRAY);
$json = json_decode($json ,true);
連想配列にしたい場合必須の設定です。以下、引用。
true の場合、返されるオブジェクトは連想配列形式になります。 false の場合、返されるオブジェクトは object になります。 null の場合、返されるオブジェクトは flags に JSON_OBJECT_AS_ARRAY が設定されているかどうかによって、 連想配列形式か object かが変化します。
PHP: json_encode – Manual