我怎样才能回显PHP数组中的每个项目而不仅仅是最后一个?

时间:2017-09-11 23:52:57

标签: php

我在PHP中有一个数组(由于某些复杂的原因,它必须是PHP,超出了本文的范围):

<?php
$arr = array(Div1, Div2);
foreach ($arr as $value) {
print_r($value);
}
?>

然后我有一些Jquery,我试图用它来隐藏该数组中有一个类的每个元素。

<script>
$(document).ready(function(){
$("."+"<?php echo $value; ?>").hide();
});
</script>

但是,这只隐藏了类等于数组中最后一项的元素。换句话说,只有类Div2的项隐藏。如何使这适用于数组中的每个项目?

5 个答案:

答案 0 :(得分:2)

你可以使用php数组并在javascript中使用它。最简单的方法是使用json:

<?php
  $arr = array('Div1', 'Div2');
?>

<script>
  $(document).ready(function(){
    var arr = <?=json_encode($arr);?>;
    arr.forEach((className)=>$("."+className).hide());
  });
</script>

或者你可以加入数组并让jquery迭代它:

<script>
  $(document).ready(function(){
    var arr = <?=json_encode($arr);?>;
    $('.'+arr.join(', .')).hide();
  });
</script>

答案 1 :(得分:1)

foreach循环结束后,$value仍然绑定到$arr的最后一个值。要么以某种方式将js-output包含到循环中,要么在js-php-loop中再次循环遍历数组

答案 2 :(得分:1)

用这个替换JS行,只要$arr在JS代码所在的范围内(它应该基于你的问题),它就会起作用。

<?php
foreach($arr as $value) {
    echo '$("' . '.' . $value . '").hide();';
}
?>

您之前只是在数组上循环而没有对值进行任何操作(除了在它们上使用print_r()之外)。因此,当您到达第二个代码段中的代码时,只有$value的最后一个值可用。

答案 3 :(得分:0)

请将其替换为以下代码并进行测试。

<script>
$(document).ready(function(){
<?php
$arr = array(Div1, Div2);
foreach ($arr as $value) {
echo '$("."+"'.$value.').hide();';
}
?>
});
</script>

答案 4 :(得分:0)

试试这个:

<?php
  $arr = array(Div1, Div2);
  //give us the resulat of this please add to the post
  var_dump($arr);
  $array_to_object_json = json_encode($arr);
?>

我们需要知道返回此var_dump

的内容
<script>
  var global_json_from_php = <?php echo $array_to_object_json; ?>;
  $(document).ready(function(){
      console.log(global_json_from_php);
     for(i in global_json_form_php){
         $("."+global_json_from_php[i]).hide();
     }
  });
</script>