首先获取null数组,然后在php

时间:2016-11-15 12:14:24

标签: php arrays json

在我的脚本中,我从数据库中获取数据并将其存储在数组中并将其输出到json中。一切都正确只是我得到的第一个数组是null然后第二个数组有正确的数据。我不明白为什么我得到第一个null数组。

如果我在没有null数组的数组中得到正确的结果,我的问题就解决了。 这是我得到的输出

[[],{"url":"example.com\/sign_pdf\/PDFSign.pdf","name":"PDFSign.pdf","signer":"aman","sequence":"1","message":"Hello","flag":"0"}]

我不需要First null数组。我为什么要这样做。

这是代码。

if(($_GET['action'])&&($_GET['username'])&&($_GET['key'])) {
    $select = $_GET['action'];
    $username =$_GET['username']; //no default
    $key= $_GET['key'];

    if($key=='abcxyz'){
        if($select=='select'){
            /* connect to the db */
            $connect = mysqli_connect('localhost','root','')or die("Couldn't connect to database!");
            mysqli_select_db($connect,'sign') or die ("Couldn't find database");         

            $query ="SELECT * FROM path WHERE signer ='$username' ";

            $result = mysqli_query($connect,$query);
            $numrows=mysqli_num_rows($result);
            $posts[] = array();

            if($numrows!==0) {

                while($row = mysqli_fetch_array($result)) {
                    $post['url'] = $row['url'];
                    $post['name'] = $row['name'];
                    $post['signer'] = $row['signer'];
                    $post['sequence'] = $row['sequence'];
                    $post['message'] = $row['message'];
                    $post['flag'] = $row['flag'];
                    array_push($posts, $post);
                }

                header('Content-type: application/json');
                echo json_encode($posts); 

            }
        }
    }
} 

4 个答案:

答案 0 :(得分:1)

您的$posts[]=array()应该与$posts=array()类似,并使用$post$posts追加到$posts[]=$post

$posts = array();
if ($numrows !== 0) {
    while ($row = mysqli_fetch_array($result)) {
        $post = array();
        $post['url'] = $row['url'];
        $post['name'] = $row['name'];
        $post['signer'] = $row['signer'];
        $post['sequence'] = $row['sequence'];
        $post['message'] = $row['message'];
        $post['flag'] = $row['flag'];
        $posts[] = $post;
    }
}

答案 1 :(得分:1)

您正在array(array())

创建$posts[] = array();

替换它:

$posts[] = array();

$posts = array();

$posts = array();将创建一个空array()而不是array(array())

答案 2 :(得分:1)

而不是

$posts[] = array();

将数组分配给$posts的第一个元素,使用

$posts = array();

初始化变量,我认为你想要做的事。

答案 3 :(得分:0)

您应该删除 $ posts 数组。 array_push($ posts,$ post)基本上是你的空$ posts数组并将$ post数组添加到它。