как мы можем присвоить одно значение массива любой переменной в javascript

#php #javascript

#php #javascript

Вопрос:

 <?php
$abc=array();
$abc = (abc, cde,fre);
?>
<script language="javascript" type="text/javascript">
for (var i = 0; i < 3; i  ) {
var gdf = "<?php echo $lat['i'];?>";
alert("value =" gdf);
}
</script>
  

Комментарии:

1. Если вы согласны с некоторыми другими вашими ответами, мы, возможно, будем более готовы помочь.

2. Пожалуйста, отредактируйте свой вопрос, чтобы уточнить, в чем проблема.

3. Ваш код буквально не имеет смысла. Откуда берется $ lat? Вторая строка $ abc также не является правильным способом инициализации вашего массива частями массива.

4. на самом деле я хочу присвоить значение массива переменной signal в javascript и показать это значение в качестве предупреждения.

Ответ №1:

Следуя вашему комментарию, я думаю, это то, что вы пытаетесь сделать:

 <?php

$abc = array('abc', 'cde', 'fre');

?>
<script type="text/javascript">
var gdf = '<?php

for ($i = 0; $i < count($abc); $i  ) {
    echo "{$abc[$i]}";
    if ($i != (count($abc)-1)) echo ", ";
}

?>';
</script>
  

Выведет:

http://codepad.org/KjEH5CmN

 <script type="text/javascript">
var gdf = 'abc, cde, fre';
</script>
  

ПРИМЕЧАНИЕ

Использование implode, если вам нужна одна переменная, также будет хорошо работать:

http://codepad.org/UwukCY4m

 <?php

$abc = array('abc', 'cde', 'fre');

?>
<script type="text/javascript">
var gdf = '<?php echo implode(', ',$abc); ?>';
</script>
  

Ответ №2:

Вы не хотите присваивать одно значение массиву; вы ищете весь массив. Ваш цикл JavaScript пытается выполнить итерацию по всему $abc массиву из PHP.

Что-то вроде этого сработало бы:

 var abc = <?php echo json_encode($abc); ?>;
for(var i = 0; i < 3; i  )
    var gdf = abc[i];
    alert("value = "   gdf);
}
  

Комментарии:

1. <?= устарел, пожалуйста, не используйте его.

2. @halfdan — У вас есть официальное заявление PHP на этот счет? Последнее, что я слышал, все еще не было определено, что 6 официально откажется от них, но это было некоторое время назад.

3. <?php $abc=array(‘abc’, ‘cde’, ‘fre’); ?> <язык скрипта = «javascript» тип=»text / javascript»> var abc = [‘<?php echo implode(«‘, ‘», $abc) ?>’]; для ( var i = 0; i < abc.length; i ) { alert(‘value=’ abc[i]); } </script>

Ответ №3:

Во-первых, для построения массива PHP вы должны использовать эту нотацию:

 <?php

$abc = array('abc', 'cde', 'fre');

?>
  

Далее, невозможно использовать JavaScript для прямого перебора вашей переменной, которая хранится в PHP. Вместо этого вы можете сделать что-то подобное, выполнив цикл в PHP:

 <?php
$abc=array('abc', 'cde', 'fre');
?>
<script language="javascript" type="text/javascript">
    <?php foreach ( $abc as $el ): ?>
    alert('value=<?php echo $el ?>');
    <?php endforeach ?>
</script>
  

Или, если вы действительно хотите, чтобы цикл выполнялся в JavaScript, а не PHP, вы можете «экспортировать» массив PHP в JavaScript, преобразовав массив в строку JSON и выведя его.

 <?php
$abc=array('abc', 'cde', 'fre');
?>
<script language="javascript" type="text/javascript">
    var abc = <?php echo json_encode($abc) ?>;

    for ( var i = 0; i < abc.length; i   ) {
        alert('value='   abc[i]);
    }
</script>
  

Комментарии:

1. Я совершенно уверен, что у него там есть предупреждение только для тестирования его кода. Чего он действительно хочет, так это использовать значения в своем JavaScript..

2. Да, alert это просто для демонстрации техники. Это может быть заменено любым кодом, который ему нравится.

3. json_encode это лучше, чем создавать массив (более или менее) вручную.

4. @Felix Спасибо, вы правы. Я обновил свой пост, чтобы использовать json_encode .

5. @HansEngel такая спагетти-комбинация php и js меня расстраивает.