Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP用数据库中的值填充javascript数组?_Php_Javascript - Fatal编程技术网

如何使用PHP用数据库中的值填充javascript数组?

如何使用PHP用数据库中的值填充javascript数组?,php,javascript,Php,Javascript,我必须创建一个javascript数组,其元素由php从数据库中获取。可能吗?如果是,怎么做 (我不想使用ajax来实现这一点)如果可以循环浏览数据库内容,那么创建数组很简单: echo "var myArray = ["; 在此处循环遍历数组,并在单独的值中添加逗号 echo "];"; 您的myArray变量将在客户端可用。它应该看起来像: var myArray = [1, 3, 2, 4]; 或者,为了避免由于基于循环的字符串连接而产生额外的逗号,您可以按如下方式将变量写入客户端:

我必须创建一个javascript数组,其元素由php从数据库中获取。可能吗?如果是,怎么做


(我不想使用ajax来实现这一点)

如果可以循环浏览数据库内容,那么创建数组很简单:

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不太熟悉,但这是任何服务器端语言都可以做到的。

回答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 ;";

干杯

收集数组中的值并使用以下命令将其转换为JSON:


var arr=新数组();

以下是一个正确处理数据中单引号的解决方案:

首先检索数据库数据,例如使用mysqli_uu函数:

$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\u encode
通过将反斜杠加倍来转义反斜杠(应该如此)。它不转义单引号是正常的,因为它不知道我们把它放在什么上下文中。因此,当我们将其注入JavaScript,并用单引号将其包装时,我们还负责转义引号。

请详细说明您所说的“什么样的动态”。我不是php爱好者,但这不会给数组添加一个额外的逗号吗?@Kobi:会的,但JavaScript引擎不会抱怨。如果你用alert([1,2,3,])将数组[a,b,c]的内容通知屏幕,则会显示文本“a,b,c”。@Kobi:事实上,仔细检查一下,$js_array{strlen($js_array)-1}='];可能会覆盖最后一个逗号。
$result = mysqli_query($con, $sql);
if (!$result) die(); // error handling comes here
$array = mysqli_fetch_all($result, MYSQLI_ASSOC);
$output = str_replace("'", "\'", json_encode($array));
echo "var array = '$output';";