json_decode在有效值php上返回null

json_decode在有效值php上返回null,php,Php,这是我的密码: echo '<br/>'; echo 'Json data from DB '.json_encode($output); $data=array(); $array=json_decode($output,true); echo '<br/>'; echo 'Concerted into an array '.json_encode($array); 为什么json_devode返回null?如果我这样做:

这是我的密码:

   echo '<br/>';
   echo 'Json data from DB   '.json_encode($output);
   $data=array();
   $array=json_decode($output,true);
   echo '<br/>';
   echo 'Concerted into an array   '.json_encode($array);
为什么json_devode返回null?如果我这样做:

$data = '[{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}]';

// convert to an array
$data = json_decode($data, true);
然后正常打印出来:

Json data from DB  [{"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","3":"1","key-4":"1"}] 
Concerted into an array  {"0":"1","key-1":"1","1":"1","key-2":"1","2":"1","key-3":"1","4":"1","key-4":"1"}

因为
json\u decode
接受一个字符串,而
$output
不是一个字符串(正如
json\u encode
所证明的:它是一个数组)。

你似乎把事情搞混了。在您的示例中,
$output
似乎已经是一个数组,您想再次解码它吗?怎么做

执行此操作时:

json_encode($output);

它返回一个正确的JSON对象,这意味着
$output
已经是一个数组。您不能对非json对象进行解码。看起来您可以直接使用
$output
,或者您需要更清楚地说明您的问题。

三次检查您试图解码的变量!
json_encode($output);