在排除问题的时候发现参与序列化的数组纯在value值为 null的情况,除去后解决问题,此处"null"为var_export的显示,这个地方是该排除下空指针
在使用hyperf 的一次神奇的返回
hyperf/utils/src/Codec/Json.php
/**
* @param mixed $data
* @throws InvalidArgumentException
*/
public static function encode($data, int $flags = JSON_UNESCAPED_UNICODE, int $depth = 512): string
{
if ($data instanceof Jsonable) {
return (string) $data;
}
if ($data instanceof Arrayable) {
$data = $data->toArray();
}
try {
$json = json_encode($data, $flags | JSON_THROW_ON_ERROR, $depth);
} catch (\Throwable $exception) {
throw new InvalidArgumentException($exception->getMessage(), $exception->getCode());
}
return $json;
}
在 json_encode($data, $flags | JSON_THROW_ON_ERROR, $depth) 抛出异常
var_export 打印发现数组存在 NULL
但是在我的项目当中不应该存在null(将数据复制后进行json_encode可以正常显示),继续排除
打印应该的数据
发现这个地方在引用内存,对应代码
在重新赋值的时候丢失了,猜测可能被垃圾回收了
foreach ($carList as $key => $value){
if (!empty($value['list'])){
$returnData[] = $value;
}
}
重新命名后可以使用了,应该是$value把之前的引用地址覆盖了
foreach ($carList as $key => $valueType){
if (!empty($valueType['list'])){
$returnData[] = $valueType;
}
}