Как я могу заполнить массив javascript значениями из базы данных с помощью PHP?

Мне нужно создать массив javascript, элементы которого извлекаются php из базы данных. Является ли это возможным? Если да, то как?

(Я не хочу использовать ajax для этого)

Solutions Collecting From Web of "Как я могу заполнить массив javascript значениями из базы данных с помощью PHP?"

Соберите значения в массиве и преобразуйте его в JSON с помощью json_encode :

 $array = array(); while ($row = mysql_fetch_assoc($result)) { $array[] = $row['key']; } echo 'var array = '.json_encode($array).';'; 

Ответ 1: да, это можно сделать.

Ответ 2: Вот как это сделать:

 $js_array = "["; $result = mysql_query("some query of yours"); while( $row=mysql_fetch_array($result, MYSQL_NUM) ) { $js_array .= $row[0]; // assuming you just want the first field // of each row in the array $js_array .= ","; } $js_array{ strlen($js_array)-1 } = ']'; echo "var db_array = $js_array ;"; 

Ура!

 <script language="javascript1.2"> var arr = new array(<?php $result = mysql_query("select .... "); $count = mysql_num_rows($result); if($count>0){ for( $i=0;$i<$count-1;$i++) { $row = mysql_fetch_row($result); echo $row[0],','; } $row = mysql_fetch_row($result); echo $row[0],','; } ?>); </script> 

Если вы можете прокручивать содержимое базы данных, создание массива прост:

 echo "var myArray = ["; 

Перемещайтесь через массив здесь и добавьте запятые для разделения значений.

 echo "];"; 

Ваша переменная myArray будет доступна на стороне клиента. Он должен выглядеть примерно так:

 var myArray = [1, 3, 2, 4]; 

Альтернативно, и чтобы избежать дополнительной запятой из-за конкатенации строк на основе цикла, вы можете написать переменную клиенту следующим образом:

 echo "var myArray = [];" 

… и для каждой строки данных выполните следующие действия:

 echo "myArray.push($db_data);" 

Это эффективно, хотя и не так чисто, как предыдущий подход. Вы получите код, похожий на следующий:

 var myArray = []; myArray.push(3); myArray.push(5); myArray.push(1); alert(myArray); // will display "3, 5, 1" 

Мои извинения за то, что я не слишком хорошо знаком с PHP, но это то, что можно сделать на любом серверном языке.

Вот решение, которое правильно относится к одинарным кавычкам в данных:

Сначала извлекайте данные базы данных, например, с помощью функций mysqli_ :

 $result = mysqli_query($con, $sql); if (!$result) die(); // error handling comes here $array = mysqli_fetch_all($result, MYSQLI_ASSOC); 

Затем преобразуйте его в JSON, выйдите из одиночных кавычек и выведите JavaScript:

 $output = str_replace("'", "\'", json_encode($array)); echo "var array = '$output';"; 

Обратите внимание, что json_encode обратную косую черту (как следует), удваивая их. И это нормально, что он не избегает одиночных кавычек, поскольку он не может знать контекст, в который мы его помещаем. Поэтому, когда мы вводим его в JavaScript, обертывая его в одинарные кавычки, мы также отвечаем за исключение кавычек.