簡體   English   中英

遍歷PHP數組以使用PHP foreach創建Javascript數組

[英]Iterating over PHP array to create Javascript array with PHP foreach

在制作PHP數組的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'];

非常感謝您的幫助。

您不需要自己執行此操作,PHP有一個名為json_encode的函數json_encode您的需要。 如果由於某種原因您沒有PHP 5.2.0,則該頁面的注釋中有很多實現可以解決此問題。

使用implode()粘合數組元素。 會注意逗號

//later that page..in JavaScript

var list = ['<?=implode("', '", $array)?>'];

您可以使用它來生成json數組:

$list = json_encode($array);

然后用Javascript閱讀:

var list = <?=$list?>

如何將數組轉換為有效的JSON對象?

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

無論如何,您真的需要即時生成JS代碼嗎? 有沒有其他方法可以完成您的任務? JS生成通常被認為是一種hack,在許多情況下可以輕松避免。

這將達到目的:

<?php 
$filtered = array();
foreach($array as $value) {
    $filtered[] = $value->some_letter_field;
}
echo 'var list = ' . json_encode($filtered);
?>

如果出於任何原因堅持保留當前代碼,請執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM