php二维数组修改键名
最近遇到一个问题,是关于json数据提交的时候,总是报出【object object】的错误,查了晚上需要资料,大部分的说法是json数据格式不规范导致的错误。一般建议说将dataType类型注释掉。但是都试了一下都没有解决。最后还怀疑是使用json_encode这个函数php版本的问题等等,都没有解决。主要我后台提交过来的是一个一维数组,而且还没有键值的一维数组。因此有同事说我的json数据格式不规范,必须要有键和值。这个我键蛋疼了,本来使用thinkphp的方式查出的数据就是二维数组,进行数据处理处理成了一维数组,那我的一维数组正好可以使用,但是使用json_encode函数转换出来没有键,只有值。老是报错。都让我弄个二位数组这样子就规范了。于是我就二维数组转一维数组,数据处理完之后又转换成二位数组,但是转换出来之后二位数组的键名没有了,我又蛋疼了网上找了一个方法,分享给大家。废话可以不用看。
这是代码:
$ar = array(
array(1 => 'a', 2 => 50, 3 => 60, 4 => 'long', 5 => 'zzz', 6 => 'kkk', 7 => 'ooo'),
array(1 => 'b', 2 => 60, 3 => 70, 4 => 'king', 5 => 'lll', 6 => 'ttt', 7 => 'ppp'),
array(1 => 'c', 2 => 70, 3 => 80, 4 => 'quit', 5 => 'qqq', 6 => 'xxx', 7 => 'ccc'),
);
$kname = array('StaffId', 'Wage', 'Name', 'Work', 'Type'); function foo(&$v, $k, $kname) {
$v = array_combine($kname, array_slice($v, 1, -1));
} array_walk($ar, 'foo', $kname);
print_r($ar);
这是输出:
Array
(
[0] => Array
(
[StaffId] => 50
[Wage] => 60
[Name] => long
[Work] => zzz
[Type] => kkk
) [1] => Array
(
[StaffId] => 60
[Wage] => 70
[Name] => king
[Work] => lll
[Type] => ttt
) [2] => Array
(
[StaffId] => 70
[Wage] => 80
[Name] => quit
[Work] => qqq
[Type] => xxx
) )
最后,分享给大家一个php的在线代码调试工具,有时候不方便运行php代码的时候,可以在这个工具里面写一下调试好了,然后在写入工程中,很方便,不过出现错误的时候不会报错。不过很满意,差点忘记了,这是工具地址http://tool.lu/coderunner/
还有最后,还没有说我这个报错怎么解决了的,这个报错是因为php缓存的问题,会将json数据加入空格,导致json数据不规范报错,在传回数据之前加入一个ob_end_clean();函数就可以了。
php二维数组修改键名的更多相关文章
- PHP 按二维数组的键值排序
/** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升 ...
- PHP二维数组按照键值排序
在开发过程中,我们常常需要对二维数组按照数组的某个键来排序,这里提供两个封装好的方法,可以放到公共函数模块里以后需要的时候直接调用即可. /** * 二维数组按照键值降序排序 * @param arr ...
- PHP 二维数组排序保持键名不变
对二维数组指定的键名排序,首先大家想到的是array_multisort函数,关于array_multisort的用法我之前也写了一篇废话不多言,我们看个实例: <?php $data = ar ...
- php二维数组按照键值排序的方法
//按照传入数组中的num倒序 public function numdesc($array,$key="num",$order="desc"){ $arr_n ...
- PHP二维数组提取函数----把不需要的数据剔除
首先说明一些这个函数的应用场景,比如说你得到的数据是个二维数组,里面的很多成员其实是不必要的,比如说api调用后不必要给别人返回一些用不到的垃圾数据吧,如下是代码. <?php /* * del ...
- PHP二维数组去重(指定键名)
本例对二维数组中某个指定键名进行去重,发现网上大多使用array_unique或是foreach遍历等方式去重,效果不佳且较为繁琐. 本文以二维数组去重为引,介绍array_column函数的三种用法 ...
- PHP 二维数组按某一个键值排序
一.前言 在某个项目中,需要读取某个文件夹下的所有文件,在本地的 Windows 环境下时,读取出来的二维数组的文件名称和在 Windows 文件夹的文件排序一致, 但是项目上线后,环境为 Linux ...
- PHP 二维数组去重(保留各个键值的同时去除重复的项)
对于如下二维数组,要求对其进行去重: $arr = array( '=>array( 'name'=>'james', , ), '=>array( 'name'=>'susu ...
- C++二维数组名的再探索
#include <iostream> int main() { ][] = { , , , , , , , , , , , }; //输出 0,1,2,3,4,5,6,7,8,9,10, ...
随机推荐
- fragment用法
简单用法: 1.新建布局.新建fragment类 2.在activity_main.xml中添加fragment <LinearLayout...... <fragment android ...
- web.config 权限设置
<system.web> <authorization> <!--未登陆用户不可以访问--> <deny users="?" /> ...
- 1147 Heaps
1147 Heaps(30 分) In computer science, a heap is a specialized tree-based data structure that satisfi ...
- kafka集群配置和java编写生产者消费者操作例子
kafka 安装 修改配置文件 java操作kafka kafka kafka的操作相对来说简单很多 安装 下载kafka http://kafka.apache.org/downloads tar ...
- 3.solr学习速成之索引添加 查询 删除
solrserver.java public class solrServer { private solrServer(){}; final static String SOLR_URL = &qu ...
- 第十三章 Spring消息(待续)
···············
- windows 10 服务组件安装出现0x80070422错误解决方法
问题描述: windows 10通过控制面板->程序->启用或关闭Windows 功能安装Windows服务或组件时,出现0x80070422错误,提示服务禁止或未启用 问题产生原因: ...
- 微信小程序之 wx.getUserInfo引导用户授权问题
首先,在page外定义一个函数用户判断是否为空对象 var isEmptyObject = function (e) { var temp; for (temp in e) ; } 然后,在page中 ...
- 分析比较多表查询中的IN与JOIN
IN 是子查询的关键字,JOIN 是连接的关键字,项目开发中经常会使用到多表查询,而子查询与连接正是实现多表查询的重要途径.那两者是怎么运行的?IN与JOIN哪个更好?下面就来分析与比较. 现在有te ...
- oracle 11g 32&64位导出 导入到Oracle10g 32位
想导入一个oracle11g的数据库到自己本地电脑上,直接exp导出的话拿到自己电脑上提示错误, 于是在网上找方法 方法如下 : 一.在11g服务器上,使用expdp命令备份数据 11g 导出语句:E ...