• ベストアンサー
  • 困ってます

PHPの配列をjavascriptへ渡したい

  • 質問No.5622476
  • 閲覧数470
  • ありがとう数3
  • 回答数4

お礼率 50% (5/10)

PHPの配列をjavascriptの配列に渡したいのですがやり方がわかりません。
変数の渡し方ならわかるのですが配列はどう渡せばいいのでしょうか?
for文を使って渡せばいいと思うんですがどうやればいいか分かりません。

<?php
$filedata=file("data.txt");//javascriptに渡したい配列
?>
<script language="javascript">
var a=new Array();//PHPの配列をこの配列に入れたい
</script>

何方か教えてください。

質問者が選んだベストアンサー

  • 回答No.3
  • ベストアンサー

ベストアンサー率 47% (4563/9537)

2の補足を見ると、ファイルには配列が入ってるんじゃなくて、ファイルの各行を配列にしたいということみたいですね。
データを引用符で囲んで、カンマで区切ります。データの中にシングルクォートが含まれないと仮定して、

<script language="javascript">
var a={'<?php print implode("','",file("data.txt",FILE_IGNORE_NEW_LINES)); ?>'};
.....

ですが、ファイルの出所によっては仮定が崩れ脆弱性になるので、ちゃんとデータ中のシングルクォートをエスケープする処理をしないといけませんね。
補足コメント
00d

お礼率 50% (5/10)

失礼しました。
こちらの構文ミスで直したらちゃんと動くようになりました。
ありがとうございます。
投稿日時:2010/01/26 18:45
お礼コメント
00d

お礼率 50% (5/10)

notnotさんご回答ありがとうございます。返答が遅くなりすみません。

>var a={'<?php print implode("','",file("data.txt",FILE_IGNORE_NEW_LINES)); ?>'};
↑この文を記述したところエラーはでないのですがjavascriptのalertウィンドウでaを表示しようとしたところ何も反応がありませんでした。
投稿日時:2010/01/26 16:09

その他の回答 (全3件)

  • 回答No.4

ベストアンサー率 52% (106/202)

PHP 5 >= 5.2.0 ( json extension )
var a = <?php echo json_encode($a,JSON_HEX_TAG|JSON_HEX_AMP); ?>;

#3 {} → []
<script language="javascript"> → <script language="javascript" type="text/javascript">

==================================================================

PHP と J(ava)Script では処理系が全く違います。その辺は大丈夫ですか?

for(i=0;i<=10;i++){
a[i]=<?php print $filedata[$i]; ?>; // 0 行目が直に印字される
<?php $i++; ?> // $i = 1 に遷移
// php の処理終了
}

PHP 終了後 下のような J(ava)Script と思われる文字列が印字される。
(ファイルの一行目の文字列を aaa と仮定する)

for(i=0;i<=10;i++){
a[i]=aaa;
}

ブラウジング後 aaa という変数は恐らく宣言されていないので、undefined が 11 個入った配列 a が作成される。
お礼コメント
00d

お礼率 50% (5/10)

yuu_xさん回答ありがとうございます。

>PHP と J(ava)Script では処理系が全く違います。その辺は大丈夫ですか?
PHPはサーバー側での処理、javascriptはブラウザ側での処理をしている、ということですよね?

>ブラウジング後 aaaという変数は恐らく宣言されていないので・・・
ありがとうございます。おかげで何故思うように動いてくれないのかが分りました。
投稿日時:2010/01/26 16:31
  • 回答No.2

ベストアンサー率 51% (3827/7415)

>何かが間違っているんじゃないかと思ったのですが

data.txtの戻り値次第ですね。
ちゃんとjavascriptの配列っぽくかかれてなければ当然文法エラーですね
補足コメント
00d

お礼率 50% (5/10)

ご回答ありがとうございます。
ありがとうございます。
おかげでちゃんと表示されるようになりました。
ですが、配列の0個目しか読み込んでくれません。
以下のソースなのですが、
<?php
$filedata=file("sevedata1/4.txt");
$i=0;
?>
<script language="javascript">
var a=new Array();

for(i=0;i<=10;i++){

a[i]=<?php print $filedata[$i]; ?>;
<?php $i++; ?>

alert(a[i]);
}
</script>

たぶん3行目の$iと11行目の$iが同一視されていないんだと思いますがどう直したらいいのかわかりません。
引き続き申し訳ないのですが宜しくお願いします。
投稿日時:2010/01/25 21:15
  • 回答No.1

ベストアンサー率 51% (3827/7415)

<script language="javascript">
var a=new Array();//PHPの配列をこの配列に入れたい
a=<?php
file("data.txt");
?>
</script>

的な処理じゃないですか?
補足コメント
00d

お礼率 50% (5/10)

yambejpさんご回答有り難う御座います。
はい、そんな感じの処理をしたいんですがjavascriptの配列にいれた後にalertウィンドウでjavascriptの変数aを表示しようとしたところ何も反応が無いのです。
何かが間違っているんじゃないかと思ったのですがどうなのでしょうか?良ければ教えてください。
投稿日時:2010/01/25 20:18
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ