Как я могу отобразить каждый элемент в моем массиве 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 скрывать. Как я могу применить это к каждому элементу в массиве?

0

Решение

Вы можете взять массив 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>
2

Другие решения

после foreach петли заканчиваются, $value все еще привязан к последнему значению вашего $arr, либо как-нибудь включить вывод js в цикл, либо снова перебрать массив в вашем цикле js-php

1

Замените эту строку JS этим, она будет работать до тех пор, пока $arr находится в области действия, где бы ни находился код JS (который должен основываться на вашем вопросе).

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

Ранее вы просто зацикливались на массиве и ничего не делали со значениями (кроме использования print_r() на них). Поэтому, когда вы достигли кода во втором фрагменте, только последнее значение $value был пригоден для использования.

1

Пожалуйста, замените его кодом ниже и проведите тест.

<script>
$(document).ready(function(){
<?php
$arr = array(Div1, Div2);
foreach ($arr as $value) {
echo '$("."+"'.$value.').hide();';
}
?>
});
</script>
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>
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector