PHPでjavascriptの配列を作成するときの注意点
最近、配列を展開するときはもっぱらforeachなわけですので、配列を展開するときはforeachを使いたいのです。
$data = array(a,b,c);
な感じの時はやっぱり
var arr = [
<?php foreach $data as $key => $val: ?>
{data: <?php echo $val; ?>},
<?php endif; ?>;
];
と書きたい。
こう書きたいです。ですがこれだとIE6でエラーでます。理由は配列区切りの ,(コンマ)が原因です。
出力されるソースは以下になります。
var arr = [
{data: a},
{data: b},
{data: c},
];
この最後のコンマが原因でエラーがでちゃいます。
今までこれを回避するのに
for文カウンター変数が最後だったら
という条件分岐で最後のコンマ消してました。
配列だからforeach使いたい!使いたいよー
見つけました。そんなん知らんがな!という書き方
以下で解決しました。
var arr = [
<?php foreach($data as $val => $key):next($data); ?>
<?php if(current($data) !== false): ?>
{data : '<?php echo $val; ?>'},
<?php else: ?>
{data : '<?php echo $val; ?>'}
<?php endif; ?>
<?php endforeach; ?>
];
ってなんやねん!こんな書き方見たこともありませんでした。 これで解決できました!