前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php List()函数及json_encode时无法转为数组的问题

php List()函数及json_encode时无法转为数组的问题

作者头像
caoayu
发布2020-09-23 10:51:17
1.3K0
发布2020-09-23 10:51:17
举报
文章被收录于专栏:caoayu的分享

list 函数实现 PHP中返回多个值(list并不是一个真正的函数,而是一种语言结构)

在众多的编程语言中,有很多都可以在函数中返回多个值,如 java,golang, 但是php却是不支持,虽然在 7.0 版本之后可以设置返回值的类型,但还是无法返回多个值,估计后面 php 的升级中会考虑这个问题. 既然无法原生支持,那我们就自己实现,php内置了大量的函数可以使用,这也是php开发速度快的一个原因.

实现方式 : 以数组的方式将多个返回值push进去,使用list函数接受变量并自动赋值

先来介绍下 list() 函数: 官方介绍

list() 方法可以在一次操作中为 一组变量赋值.

php7版本之前和之后会有一些差距,这里主要说7.0之后,关于差别官方介绍中有说.

在 7.0 之后的版本并不仅仅局限于 可以将一个数组以索引数组的方式给数组中的变量赋值,更可以使用关联数组的方式赋值给变量

注意,list 方法对字符串不起作用

例子: 关联数组(索引数组不需要键)

代码语言:javascript
复制
function example(){
    return [
        "drink" => "coffer",
        "color" => "brown",
        "price" => 20
    ]; 
}
function recieve(){
    $result = example(); //接受返回值
    list(
    	"drink" => $Ldrink,
        "color" => $Lcolor,
        "price" => $Lprice
        
    )= $result;
    echo $Ldrink . PHP_EOL,$Lcolor. PHP_EOL,$Lprice. PHP_EOL;
}
//打印结果
coffer
brown
20
//键为返回值里的变量,值为生成的新值.

同样的也可以使用 list() 方法结合 each() 方法 实现 foreach 的功能

json_encode 返回时的问题

当需要返回json数据时, 我们通常会使用 json_encode 将对象或数组转为 json对象或数组

代码语言:javascript
复制
json_encode($obj); //转为json对象
json_encode($obj, true); // 转为json 数组
问题所在

当我们将数组转为json数组时,如果原数组的索引不连续或者直接就是一个关联数组,则不会转为数组,而是被转为了对象

解决方法

解决方法有多种,原理上就是把 需要转为json 数组的 原数组 重构为一个索引连续的索引数组.

推荐方法

  1. 可以直接将 原数组的变量 push[]
  2. 使用 array_value() 函数, 创建一个只取原数组值,索引为连续索引的数组
  3. 使用 sort() 函数 ,同样返回 索引连续的数组
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • list 函数实现 PHP中返回多个值(list并不是一个真正的函数,而是一种语言结构)
  • 实现方式 : 以数组的方式将多个返回值push进去,使用list函数接受变量并自动赋值
  • json_encode 返回时的问题
  • 问题所在
  • 解决方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档