tp6 数据集toArray()转数组字段内部的json未转换解决方法

2 篇文章 0 订阅
$list = 'xxxx'你的sql
return $this->toArrNew($list);
public function toArrNew($obj) {
       if (is_array($obj)) {
           return $obj;
       } elseif ($obj && ($obj instanceof Collection || $obj instanceof Model)) {
      $rel = $obj->toArray();
      //return $rel ?: null;
      return array_map(function ($value) {
         if(is_array($value) == true){
            return array_map(function ($val) {
               if(is_array($val) == true){
                  return $val;
               }else{
                  return $this->analyJson($val)!=false ? json_decode($val,1) : $val;
               }
            }, $value);
         }else{
            return $this->analyJson($value)!=false ? json_decode($value,1) : $value;
         }
      }, $rel);
   } else {
      return null;
   }
}

 

function analyJson($json_str)
{
   $json_str = str_replace('\\', '', $json_str);
   $out_arr = array();
   preg_match('/{.*}/', $json_str, $out_arr);
   if (!empty($out_arr))
   {
      $result = json_decode($out_arr[0], TRUE);
   } else {
      return FALSE;
   }
   return $result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值