需要在JavaScript中循环遍历PHP数组

时间:2010-04-18 18:42:55

标签: php javascript

例如我有一个PHP数组,比如这个

<?php $s= array('a','b','c','d','e','f') ; ?>

我需要在JavaScript中循环它,任何想法我该怎么做?

for ( i=0 ; i < <?php echo sizeof($s) ?> ; i++) {
document.write('<?php echo $s [somehow need to get the 'i' value into here] ?>');
}

有什么建议吗?谢谢!

6 个答案:

答案 0 :(得分:9)

在你的ehco / print或你的php数组之前,我们确保它是用JavaScript语法。

<?php
$s=array('a','b','c','d','e','f');
$s_to_json=json_encode((array)$s);
?>

<script type="text/javascript">

var fromPHP=<? echo $s_to_json ?>;

for (i=0; i<fromPHP.length; i++) {

yourValue=fromPHP[i];

}

</script>

答案 1 :(得分:5)

Javascript和PHP无法合并。它们是两个完全不同的程序,只能模糊地交流。 PHP在服务器计算机上运行并生成HTML。 javascript在webbrowser中的客户端计算机上运行,​​并作用于该HTML。如果您需要以某种方式将信息从PHP移动到Javscript中,那么您必须将其存储在HTML中并让Javascript通过该HTML访问它。如果你需要反过来,将信息从Javascript移动到PHP,让Javascript调用带有查询字符串的PHP页面。

将信息放置在Javascript可以到达的数组中的一种方法是将其回显到隐藏的div中。在一系列ided跨度或只是逗号分隔列表中。然后你可以把它从DOM中拉出来。

例如:

<div style="display: none;" id="myArray">
<?php 
echo '<span id="myArray.count">'.sizeof($s).'</span>';
for ($i = 0; $i < sizeof($s); $i++) {
    echo '<span id="myArray.'.$i.'">'.$s[$i].'</span>';
}
?>
</div>

然后在Javascript中,您可以访问DOM中的数组:

var myArray = new Array();

for(i = 0; i < document.getElementById('myArray.count').innerHTML; i++) {
  document.write(document.getElementById('myArray.'+i).innerHTML);
}

免责声明:未经测试的代码,我现在没时间完善它。如果其他人想要评论或编辑以修复任何错误,请随意:)

答案 2 :(得分:3)

是....将您的PHP数组作为JavaScript数组首先回显,然后循环。不要尝试循环PHP数组;你做不到。

答案 3 :(得分:3)

<?php
$s= array('a','b','c','d','e','f') ;
?>

<?php foreach($s as $a){ ?>

document.write('<?=$a?>');

<?php } ?>

未经测试但只有一种方式。

答案 4 :(得分:0)

<?php $religion = array('1'=>'hindu','2'=>'sikh','3'=>'muslim'); ?>

<script>

  <select name="religion_name">
  <?php foreach ($religion as $key => $value)
  { echo" <option value=$key> $value->name </option>";  } ?>
  </select>

</script>

答案 5 :(得分:0)

实际上,如果您将优先级从JavaScript作为基础,改为PHP作为循环基础,那么您可以做到。

    <?php
     $s= array('a','b','c','d','e','f') ;
     for ( $i=0 ; $i < sizeof($s); i++) 
       {
       ?>
      <script type="text/javascript">
      document.write('<?php echo $s[$i]?>');
     </script> 
     <?php
        }