Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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
如何将这个数据库记录字符串格式化为这个JavaScript对象数组?_Javascript_Php_Mysql - Fatal编程技术网

如何将这个数据库记录字符串格式化为这个JavaScript对象数组?

如何将这个数据库记录字符串格式化为这个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

在一个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&

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>