php List()函数及json_encode时无法转为数组的问题
时间:2022-07-25
本文章向大家介绍php List()函数及json_encode时无法转为数组的问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
list
函数实现 PHP
中返回多个值(list并不是一个真正的函数,而是一种语言结构)
在众多的编程语言中,有很多都可以在函数中返回多个值,如 java,golang
, 但是php
却是不支持,虽然在 7.0 版本之后可以设置返回值的类型,但还是无法返回多个值,估计后面 php
的升级中会考虑这个问题. 既然无法原生支持,那我们就自己实现,php
内置了大量的函数可以使用,这也是php
开发速度快的一个原因.
实现方式 : 以数组的方式将多个返回值push
进去,使用list
函数接受变量并自动赋值
先来介绍下 list()
函数: 官方介绍
list() 方法可以在一次操作中为 一组变量赋值.
在php7
版本之前和之后会有一些差距,这里主要说7.0之后,关于差别官方介绍中有说.
在 7.0 之后的版本并不仅仅局限于 可以将一个数组以索引数组的方式给数组中的变量赋值,更可以使用关联数组的方式赋值给变量
注意,list 方法对字符串不起作用
例子: 关联数组(索引数组不需要键)
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
对象或数组
json_encode($obj); //转为json对象
json_encode($obj, true); // 转为json 数组
问题所在
当我们将数组转为json
数组时,如果原数组的索引不连续或者直接就是一个关联数组,则不会转为数组,而是被转为了对象
解决方法
解决方法有多种,原理上就是把 需要转为json
数组的 原数组 重构为一个索引连续的索引数组.
推荐方法
- 可以直接将 原数组的变量
push
到[]
中 - 使用
array_value()
函数, 创建一个只取原数组值,索引为连续索引的数组 - 使用
sort()
函数 ,同样返回 索引连续的数组
- Selenium2+python自动化33-文件上传(send_keys)
- hive的partition的作用和使用方法
- 线段树,最大值查询位子(个人模版)
- set使用实例1+lower_bound(val)(个人模版)
- Selenium2+python自动化29-js处理多窗口
- 谷歌「机弦」有何玄机?
- 01字典树贪心查询+建立+删除(个人模版)
- 优先队列(个人模版)
- Numpy教程第2部分 - 数据分析的重要功能
- 最小表示法(个人模版)
- 基于Python-ChatterBot搭建不同adapter的聊天机器人(使用NB进行场景分类)
- 并查集(个人模版)
- Markdown 语法和 MWeb 写作使用说明既然都整理了,捎带手把这个也整理了吧第一级标题<h1>
- 带权并查集(个人模版)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux中将txt导入到mysql的办法教程
- 深入了解NumPy 高级索引
- CentOS7设置jar应用程序开机启动的办法
- linux系统 java环境变量的配置办法
- 在Linux中怎么轻松删除源安装的软件包
- Linux中selinux基础配置教程详解
- 怎么禁用 Ubuntu 服务器中终端欢迎消息中的广告
- Laravel5.1 框架响应基本用法实例分析
- 在Linux中怎么一次重命名多个文件详解
- python调用私有属性的方法总结
- PHP+MySQL实现在线测试答题实例
- Python异常处理机制结构实例解析
- PHP字符串与数组处理函数用法小结
- 详解Flask前后端分离项目案例
- Laravel5.1 框架表单验证操作实例详解