【问题标题】:correct way to return a json_object as an array将 json_object 作为数组返回的正确方法
【发布时间】:2016-05-20 17:33:19
【问题描述】:

我有一个使用 sql 语句以下列方式填充的数组:

$index = 0;

while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
    $bookname[$index] = ($row['Bookname']);
    $subjectname[$index] = ($row['SubjectName']);
    $index++;
}

当我去 echo json 对数组进行编码时,当我知道它已被填充时,我得到一个空白 [],这真的很奇怪。 我在我的上下文中做错了什么

echo json_encode($Bookname,$SubjectName);

【问题讨论】:

  • json_encode() 的第二个参数设置如何编码数据的选项。不要在那个地方使用你的一些数据,否则你会得到非常奇怪的结果。见php.net/manual/en/function.json-encode.php
  • @maxhb 即使有一个参数也可以使用 $bookname 在我测试 echo $Bookname[2]; 时它仍然给出 [];它工作得很好并打印了那个元素!
  • 使用var_dump(json_encode($Bookname));var_dump(json_encode($SubjectName));你不能使用echo打印objectarray

标签: php sql arrays json


【解决方案1】:

您在调用json_encode 函数时传递了两个参数。您将两个阵列合二为一。然后像json_encode($combinedArray)一样调用json_encode函数

【讨论】:

【解决方案2】:

尝试以下操作:

       $index = 0;
       $data = array();
       while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
      {
        $data['Bookname'][$index] = $row['Bookname'] 
        $data['SubjectName'][$index] = $row['SubjectName'];
        $index++;

       }
       echo json_encode($data);

【讨论】:

    【解决方案3】:

    你可以像这样使用json_encode

    <?php
    $index = 0;
    $data = array();
    while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
    {
        $data[$index]['bookname'] = $row['Bookname'];
        $data[$index]['subjectname'] = $row['SubjectName'];
        $index++;
    }
    json_encode($data); // encode your array
    ?>
    

    【讨论】:

    • 仍然得到 [] 我知道不应该使用两个参数,但即使使用一个参数也没有任何反应
    • @EoinÓCribín:请使用 print_r($row);在循环内部并分享结果。
    • 根本没有打印。但是如果我使用我的原始代码进行测试并说例如: echo $bookname[0] 在循环之后我得到一个结果
    • @EoinÓCribín:你不能在我的例子中使用 $booksname[0] ......好吧,请使用 print_r($data);循环后(循环外)
    • 只是一个空白数组 (Array ( )) 打印我确信数据正在进入它。
    猜你喜欢
    • 2020-05-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 2014-07-23
    • 1970-01-01
    • 2012-11-03
    相关资源
    最近更新 更多