【问题标题】:PHP - JSON does not made outputPHP - JSON 不输出
【发布时间】:2014-10-17 11:57:38
【问题描述】:

我编写了一个代码,可以输出我当天拥有的所有终端。这个日历已经完成了。但是程序输出,我想和python一起用不行。

我的代码:

<?php

mysql_connect(deleted);
mysql_select_db("DB1367141")

$day = date("d");
$month = date("m");
$year = date("Y");

$result = mysql_query("SELECT * FROM entries WHERE day = '$day' AND month = '$month' AND year = '$year' ORDER BY hour DESC, minute");

$array = {};

while($obj = mysql_fetch_object($result))
{
    if($obj->hour != "--")
        $hour = splitf("%02d", $obj->hour);
    else
        $hour = $obj->hour;

    if($obj->minute != "--")
        $minute = splitf("%02d", $obj->minute)
    else
        $minute = $obj->minute;

    array_push($array, {"hour":$hour, "minute":$minute, "text":$obj->tex});
}

var_dump($array);
echo json_encode($array);

?>

但如果我运行它,它既不会输出数组,也不会输出“echo('hi');”

我试着把这个回声放在开头、结尾和中间。 但是输出是一样的:什么都没有

在另一个论坛我发现我必须写:

$array = array();

但是输出是一样的:什么都没有。


我尝试了正确的语法和错误报告。 当我改变 $array = array();没有改变。 我在我的 .htaccess 中添加了两行以获得更好的错误报告,它输出了 500 Internal Server Error。

【问题讨论】:

  • 您是否检查过您的数据库查询是否正在返回结果?您是否回应过您将放入您的数组以确保它们已设置?
  • 请将相关代码复制到您的问题中。
  • 启用错误,你会发现你的语法全错了。首先array_push($array, {"hour":$hour, "minute":$minute, "text":$obj-&gt;tex}) 应该是array_push($array, ["hour"=&gt;$hour, "minute"=&gt;$minute, "text"=&gt;$obj-&gt;tex]) 你似乎将js 语法与php 混合在一起。任何体面的代码编辑器都会为您突出显示此错误
  • 请阅读How to get useful error messages in php。在您的 pastebin 示例中,您有语法错误。带有$array = {}; 的行无效。当您尝试$array = array(); 时,您有什么变化?

标签: php arrays json output echo


【解决方案1】:

为了简单起见,我是否建议您尝试将日期存储转换为时间戳。这样你只需要检查条目是否在“今天”的第一秒和最后一秒之间。

你会省去很多麻烦,如果你真的需要像 JSON 布局那样输出,可以使用以下方法解析时间戳:

while($obj = mysql_fetch_object($result)) {
    $array[] = array(
        'hour' => date('H', $obj->timestamp,
        'minute' => date('i', $obj->timestamp,
        'text' => $obj->tex
    );
}
echo json_encode($array);

date('n', strtotime($strTimestamp));

【讨论】:

  • 问题是,如何获取数据库中的时间戳,如何制作未来的时间戳?
  • 这超出了这个问题的范围,为了不混淆事情会说有很多资源可以处理可以很快找到的资源,请查看 PHP 手册“时间”进行操作以及数据库的 TIMESTAMP 字段。
【解决方案2】:

在 PHP 中实例化一个空白数组是

$array = array();

编辑:正如 enricog 所说:)

另外,为简单起见,不需要array_push,我只使用:

$array[] = array("hour" => $hour, "minute" => $minute, "text" => $obj->tex);

【讨论】:

  • 好的,我会使用 array() 但是 $array[] = array(...);只允许一个条目吗?,我想做不止一个。也许我应该写: array_push($array, array("hour":$hour, "minute":$minute, "text":$obj->tex))
  • [] 只是将条目添加到数组的末尾...如果您在其中输入一个值,例如 ["my_key"] 或 [0],它将每次都覆盖它。 . 在我的代码中,数组看起来像这样: $array[0] = first item $array[1] = second item $array[2] = third item
  • 好的,谢谢,但问题没有解决,还剩 500 个
  • 啊对... 500 错误可能是由于服务器提供商(如果适用).. 一些托管公司只允许某些命令。我假设你放了 php set 命令?!如果是这样,将它们取出并放入 ini_set("ini.name", value);在您的 php 文件的顶部...如果没有,请粘贴您的 htaccess 文件的非敏感部分,因为那是导致 500 的原因
猜你喜欢
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多