【问题标题】:Array always starts at one, empty zero数组总是从一开始,空零
【发布时间】:2015-05-30 17:33:09
【问题描述】:

我正在尝试读取我的 MySQL 数据并将其作为 JSON 格式。但我只想要一个 JSON 对象,它会尝试给我一个 JSONArray,但该数组是空的。

这是它给我的,顶部是 JSON,底部是简单数组。

[
     [],
    {
        "id": "1",
        "description": null,
        "copyright": "© Ian Ransley, flickr.com\/CC BY 2.0"
    }
]

Array
(
    [0] => Array
        (
        )

    [1] => Array
        (
            [id] => 1
            [description] => 
            [copyright] => © Ian Ransley, flickr.com/CC BY 2.0
        )

)

如您所见,由于某种原因,零索引为空,并且在我的对象开始之前有一个左括号和右括号 ([]),这使我的 android 应用程序将其识别为数组而不是对象。

这是我的 php 代码:

 <?php
 header('Content-type: text/plain');

 $connection = mysqli_connect("localhost", "bananatime", "Yoyobanana", "bananatime")
            or die("Error " . mysqli_error($connection));
 if(isset($_GET['id'])){
    $sql = "SELECT * FROM bananas WHERE id = '".$_GET['id']."' ORDER BY id";
 }else{
    $sql = "SELECT * FROM bananas ORDER BY id";
 }
 $result = mysqli_query($connection, $sql) or die("Error in Selecting " .mysqli_error($connection));

 $array[] = array();
     while($row = mysqli_fetch_array($result, MYSQL_ASSOC))
     {
         array_push($array, $row);
     }
 array_values($array);
 echo json_encode($array, JSON_PRETTY_PRINT);
 echo "\n\n";
 print_r($array);

 mysqli_close($connection);
 ?>

【问题讨论】:

  • 如果您不发布代码,我们怎么知道您做错了什么?
  • 该死,对不起,我会在稍后编辑我的帖子,

标签: java php android mysql json


【解决方案1】:

$array[] = array(); 更改为$array = array();

【讨论】:

  • 解释一下区别是什么
  • 原始语法既声明了$array变量,又同时将array()附加到它上面,从而得到$array = array(array())。当您稍后在其上使用array_push() 时,您将附加$row,从而导致不想要的输出。
【解决方案2】:

array_push() 是问题所在。我不得不使用 $array = $row;

【讨论】:

  • $_GET['id'] 未设置时,如果你有不止一行,那将失败
  • 它不会失败,它只是显示最后一个对象,这对我来说现在很好。
  • @TemporaryName 那么如果你只显示最后一行,那么你实际上得到所有行是没有意义的
  • @SamiKuhmonen 是的,也许,我真的不明白如何只获取一个对象。这只是我在我的应用程序中使用 MySQL 数据库的一种解决方法,只要它对我来说没问题。
猜你喜欢
  • 2022-12-25
  • 2011-07-04
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
相关资源
最近更新 更多