【问题标题】:json_encode not returning anything when statement is true当语句为真时,json_encode 不返回任何内容
【发布时间】:2020-12-10 08:40:23
【问题描述】:

我有这个 php 脚本,它只会检查服务器中是否存在文件。

<?php
$CSVpath = 'http://10.169.00.00:6000/'.$_REQUEST["id_number"].'.csv';

$FinalData = [ 'exists' =>
  (fopen($CSVpath,"r"))
];
header('Content-Type: application/json');
echo json_encode($FinalData);

?>

当数据不存在时,它可以工作并返回{"exists":false}

但是当文件存在时什么都不显示。

我的脚本有什么问题?

【问题讨论】:

  • 嗨,也许is_readable($path) 会有所帮助?
  • @IronMan 仍然没有返回任何内容。
  • fopen() 返回一个资源。为什么要尝试将其编码为 JSON?你期望它返回什么?

标签: php json file


【解决方案1】:

fopen() 返回一个资源。资源没有 JSON 编码,因为它在创建它的 PHP 进程之外没有任何意义。

您可以使用!! 将任何值转换为相应的布尔值。 `

$FinalData = [ 'exists' =>
  !!fopen($CSVpath,"r")
];

【讨论】:

    【解决方案2】:

    你可以像下面这样使用 curl 吗?

    $FinalData = [ 'exists' => false ];
    
    $CSVpath = 'http://10.169.00.00:6000/'.$_REQUEST["id_number"].'.csv';
    
    $ch = curl_init($CSVpath);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); # handles 301/2 redirects
    curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    $FinalData['exists'] =  $httpCode == 200;
    
    header('Content-Type: application/json');
    echo json_encode($FinalData);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      相关资源
      最近更新 更多