CakePHP2ネタという訳ではないですが、PHPの配列もしくは連想配列をJavaScriptに渡すやり方です。
■力技
ネットでは、PHPの配列を「カンマ区切り文字列」にしてJavaScriptに渡し、JavaScript側でカンマにてsplitするという力技が紹介されてました。(ちょっと古い記事かもしれませんが・・・)
// PHP in Server
$str = join(",", $list);
// JavaScript in Client
var js_str = "<?= $str ?>";
var list = js_str.split(",");
$str = join(",", $list);
// JavaScript in Client
var js_str = "<?= $str ?>";
var list = js_str.split(",");
■JSONで
JSONデータで渡した方が、スマートだと思います。これだと、連想配列もすんなり渡せます。例えば、こんな連想配列でも、PHP側でJSON文字列にエンコードして・・。
$date = array(
(int) 8 => '2013-07-25',
(int) 12 => '2013-07-26',
(int) 13 => '2013-07-31'
)
$json_string = json_encode($date);
(int) 8 => '2013-07-25',
(int) 12 => '2013-07-26',
(int) 13 => '2013-07-31'
)
$json_string = json_encode($date);
JSON文字列をJavaScriptで受け取って、paraseJSONでJSON配列にすると良いのではないでしょうか。
$(function() {
var json_string = '<?= $json_string ?>';
var datelist = $.parseJSON(json_string);
});
var json_string = '<?= $json_string ?>';
var datelist = $.parseJSON(json_string);
});
※ちなみにクォーテーション部分の「’」は、「”」だとエラーになります。JSONコードの要素がダブルクォーテーションで囲み、外側はシングルクォーテーションにするのがJSONの書式だからみたいです。
'<?= $json_string ?>'
↓
'{"8":"2013-07-25","12":"2013-07-26","13":"2013-07-31"}'
↓
'{"8":"2013-07-25","12":"2013-07-26","13":"2013-07-31"}'
[…] CakePHP2 連想配列をJavaScriptに渡す | GettingOUT […]