【问题标题】:Awkward return behaviour in php - slashes mixphp 中尴尬的返回行为 - 斜杠组合
【发布时间】:2013-12-02 09:47:56
【问题描述】:

我有一个将 JPG 或 PNG 转换为 base64 字符串的 If 语句:

$data = file_get_contents($path); 
//separator is fine
$base64_image = 'data:image'.DIRECTORY_SEPARATOR.'jpeg;base64,' . base64_encode($data);


$output = [];
$output = $base64_image;
echo json_encode(array('response' => $od1));
return; 

此代码输出类似 {"response":["data:image/jpeg;base64 ... ] } 这很好。

但我需要输出是单独的方法,因为我多次使用它:

public function returnOutput($message)
{
        $output_upload = []; 
        $output_upload[] = $message;

        echo json_encode(array('response' => $output_upload));
        return;

}

...和调用:

$this->returnOutput($base64_image); 

像这样混合斜线:

{"response":["data:image\/jpeg;base64 ... "]}

从其他方法使用 return 有问题吗?

编辑:

我想将响应直接发送到浏览器,是的。删除了 DIRECTORY_SEPARATOR

这是我改变的,现在很好:

public function returnOutput($message)
{
    $output_upload = []; 
    $output_upload[] = $message;

    return json_encode(array('response' => $output_upload));

}

还有呼唤:

...
echo $this->returnOutput($base64_image);
//I want to terminate the program after the response
return;

这样更好吗?所以我不能在任何地方都使用一种方法返回?

【问题讨论】:

  • 不确定它是否能解决你的问题,但对我来说'return json_encode(array('response' => $output_upload));' 更有意义然后'回显 $this->returnOutput($base64_image);'
  • 传给JS,所以应该回显
  • 但是你的方法叫做“returnOutput”,但它没有返回任何东西。
  • 回显你的方法调用 echo $this->returnOutput($base64_image); 而不是 json。
  • 确实,该方法没有返回任何内容。有那个回报没有做任何事情。我知道你想将它作为 JSON 回显到浏览器,这就是这样做的。正如我所说,这对我来说更有意义。如果您想使用相同的方法来获取输出并将其存储在一个变量中(缓存或其他东西)而不是发送海峡到浏览器,那么您不能这样做。不过并不是特别重要。

标签: php return


【解决方案1】:

这是一个完全有效的 JSON 编码斜线return 什么都没有错,是 JSON 编码

作为旁注:DIRECTORY_SEPARATOR 用于代表/\,具体取决于您的系统。它不是/ 同义,这里没有必要使用它。就这样写image/jpeg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多