0

Javascript 配列を生成するための PHP 配列の反復処理中に、煩わしい「,」に少し問題があります。基本的に、私が持っているのはこれです:

<?php
  $array = array(StdObject,StdObject,StdObject);
?>

//later that page...in JavaScript

var list = [
<?php foreach($array as $value):?>
  '<?=$value->some_letter_field?>',
<?endforeach;?>
];

残念ながら、このコードは次のような出力を生成します。

var list = ['a','b','c',];

JavaScript 配列に余分なコンマがあることに注意してください。これにより、いくつかの問題が発生しています。この PHP スニペットを書き直して、余分なコンマが出力されないようにするにはどうすればよいでしょうか。適切にフォーマットされた JavaScript 配列が生成されます。

予想される出力は次のようになります。

var list = ['a','b','c'];

よろしくお願いします。

4

6 に答える 6

9

これを自分で行う必要はありません。PHP には、必要な処理を実行するという関数がjson_encodeあります。何らかの理由で PHP 5.2.0 を持っていない場合、そのページのコメントにそれを回避するための多くの実装があります。

于 2012-12-11T16:38:03.043 に答える
5

implode() を使用して、配列要素を接着します。カンマを気にします

//later that page..in JavaScript

var list = ['<?=implode("', '", $array)?>'];
于 2012-12-11T16:39:12.310 に答える
1

これでうまくいきます:

<?php 
$filtered = array();
foreach($array as $value) {
    $filtered[] = $value->some_letter_field;
}
echo 'var list = ' . json_encode($filtered);
?>
于 2012-12-11T16:55:42.240 に答える
1

これを使用して、json 配列を生成できます。

$list = json_encode($array);

そして、Javascriptでそれを読んでください:

var list = <?=$list?>
于 2012-12-11T16:40:06.610 に答える
0

配列を有効な JSON オブジェクトに変換するのはどうですか?

var list = JSON.parse("<?php echo json_encode($array); ?>");

とにかく、その場で JS コードを生成する必要は本当にあるのでしょうか? タスクを完了する別の方法はありませんか? JS の生成はハックと見なされることが多く、多くの場合、簡単に回避できます。

于 2012-12-11T16:43:15.187 に答える
-1

何らかの理由で現在のコードを維持したい場合は、次のようにします。

var list = [
<?php foreach($array as $value): ?>
  $output[] = "'".$value->some_letter_field."'";
<?php endforeach; ?>
  echo implode(',', $output);
];
于 2012-12-11T16:58:16.993 に答える