如何将这个数据库记录字符串格式化为这个JavaScript对象数组?
在一个MySQL数据库表列中,我的PHP脚本中返回了这样一个值如何将这个数据库记录字符串格式化为这个JavaScript对象数组?,javascript,php,mysql,Javascript,Php,Mysql,在一个MySQL数据库表列中,我的PHP脚本中返回了这样一个值 position=1&x=0.203125&y=0.23125&position=2&x=0.8427083333333333&y=0.415625&position=3&x=0.5510416666666667&y=0.4375& 坏了看起来像这样 position=1& x=0.203125& y=0.23125& positio
position=1&x=0.203125&y=0.23125&position=2&x=0.8427083333333333&y=0.415625&position=3&x=0.5510416666666667&y=0.4375&
坏了看起来像这样
position=1&
x=0.203125&
y=0.23125&
position=2&
x=0.8427083333333333&
y=0.415625&
position=3&
x=0.5510416666666667&
y=0.4375&
所以这个特殊的记录有3组位置,x和y
现在在我的PHP脚本中,当我在一个while循环中从数据库中获取每一行时,我需要将此列和字符串分解为单独的变量,以便它可以从上面的示例数据库值创建此JavaScript,我需要用我的PHP构建此JavaScript值
<script>
$('#photo1 .avoid').addAnnotations(annotation, [
{x: 0.203125, y: 0.23125, position: 1},
{x: 0.8427083333333333, y: 0.415625, position: 2},
{x: 0.5510416666666667, y: 0.4375, position: 3}
]);
</script>
因此,数据库中的每个记录/行都有一个列,该列的值如下,我需要在循环中为每一行构建一个小JavaScript片段
如果您能帮助我提取并获取该专栏中的数据以构建此JavaScript,我将不胜感激
如果必须使用绝对值,我还可以改变数据在该数据库列中的存储方式,如果需要以不同的方式分隔数据,或者进行一些简化。非常感谢您的帮助,谢谢
简单的PHP循环示例
<?php
foreach ($rmaRecord as $rma){
$img1 = "
<script>
$(document).ready(function() {
$('#photo1 .avoid').addAnnotations(annotation, [
{x: 0.3875, y: 0.3246, position: 4},
{x: 0.8427083333333333, y: 0.415625, position: 2},
{x: 0.5510416666666667, y: 0.4375, position: 3}
]);
});
</script>";
}
根据我的评论,如果您可以将数据保存为json,这将是最简单的,但假设您不能,请尝试以下操作:
$data = 'position=1&x=0.203125&y=0.23125&position=2&x=0.8427083333333333&y=0.415625&position=3&x=0.5510416666666667&y=0.4375&';
$json = array();
$pairs = array_filter(explode('&', $data));
for($i=0; $i < count($pairs); $i+=3){
$position = explode('=', $pairs[$i]);
$position = $position[1];
$x = explode('=', $pairs[$i+1]);
$x = $x[1];
$y = explode('=', $pairs[$i+2]);
$y = $y[1];
$json[]=array('x' => $x, 'y' => $y, 'position' => $position);
};
echo json_encode($json);
//echo '<pre>' . json_encode($json, JSON_PRETTY_PRINT) . '</pre>';
你是对的,你需要把这个字符串分割成一个数组,我认为有很多方法可以做到这一点。如果您使用的是模板样式,则可以将html与php混合使用。PHP并不是我的主要优点,但作为一种快速而肮脏的解决方案,您可以使用以下内容
<script>
$(document).ready(function() {
$('#photo1 .avoid').addAnnotations(annotation, [
<?php
$a = "position=1&x=0.203125&y=0.23125&position=2&x=0.8427083333333333&y=0.415625&position=3&x=0.5510416666666667&y=0.4375&";
$a = preg_replace("/&$/","",$a);
$array = array_chunk(preg_split("/&/",$a),3);
echo json_encode($array, JSON_PRETTY_PRINT);
?>
]);
});
</script>
根据您的PHP版本,您还可以尝试:
那么,将其保存在数据库中作为json字符串将是最简单的——您可以直接将其回显出来,我不明白:顶级值是存储在单个列中的内容,就像在表中的SELECT列中一样?
<script>
$(document).ready(function() {
$('#photo1 .avoid').addAnnotations(annotation, [
<?php
$a = "position=1&x=0.203125&y=0.23125&position=2&x=0.8427083333333333&y=0.415625&position=3&x=0.5510416666666667&y=0.4375&";
$a = preg_replace("/&$/","",$a);
$array = array_chunk(preg_split("/&/",$a),3);
echo json_encode($array, JSON_PRETTY_PRINT);
?>
]);
});
</script>