1. 程式人生 > >php二維陣列修改鍵名

php二維陣列修改鍵名

最近遇到一個問題,是關於json資料提交的時候,總是報出【object object】的錯誤,查了晚上需要資料,大部分的說法是json資料格式不規範導致的錯誤。一般建議說將dataType型別註釋掉。但是都試了一下都沒有解決。最後還懷疑是使用json_encode這個函式php版本的問題等等,都沒有解決。主要我後臺提交過來的是一個一維陣列,而且還沒有鍵值的一維陣列。因此有同事說我的json資料格式不規範,必須要有鍵和值。這個我鍵蛋疼了,本來使用thinkphp的方式查出的資料就是二維陣列,進行資料處理處理成了一維陣列,那我的一維陣列正好可以使用,但是使用json_encode函式轉換出來沒有鍵,只有值。老是報錯。都讓我弄個二位陣列這樣子就規範了。於是我就二維陣列轉一維陣列,資料處理完之後又轉換成二位陣列,但是轉換出來之後二位陣列的鍵名沒有了,我又蛋疼了網上找了一個方法,分享給大家。廢話可以不用看。

這是程式碼:

 1 $ar = array(
 2   array(1 => 'a', 2 => 50, 3 => 60, 4 => 'long', 5 => 'zzz', 6 => 'kkk', 7 => 'ooo'),
 3   array(1 => 'b', 2 => 60, 3 => 70, 4 => 'king', 5 => 'lll', 6 => 'ttt', 7 => 'ppp'),
 4   array(1 => 'c', 2 => 70, 3 => 80, 4 => 'quit', 5 => 'qqq', 6 => 'xxx', 7 => 'ccc'),
 5
); 6 $kname = array('StaffId', 'Wage', 'Name', 'Work', 'Type'); 7 8 function foo(&$v, $k, $kname) { 9 $v = array_combine($kname, array_slice($v, 1, -1)); 10 } 11 12 array_walk($ar, 'foo', $kname); 13 print_r($ar);

這是輸出:

 1 Array
 2 (
 3     [0] => Array
 4         (
 5             [StaffId] => 50
 6
[Wage] => 60 7 [Name] => long 8 [Work] => zzz 9 [Type] => kkk 10 ) 11 12 [1] => Array 13 ( 14 [StaffId] => 60 15 [Wage] => 70 16 [Name] => king 17 [Work] => lll 18 [Type] => ttt 19 ) 20 21 [2] => Array 22 ( 23 [StaffId] => 70 24 [Wage] => 80 25 [Name] => quit 26 [Work] => qqq 27 [Type] => xxx 28 ) 29 30 )

最後,分享給大家一個php的線上程式碼除錯工具,有時候不方便執行php程式碼的時候,可以在這個工具裡面寫一下除錯好了,然後在寫入工程中,很方便,不過出現錯誤的時候不會報錯。不過很滿意,差點忘記了,這是工具地址http://tool.lu/coderunner/

還有最後,還沒有說我這個報錯怎麼解決了的,這個報錯是因為php快取的問題,會將json資料加入空格,導致json資料不規範報錯,在傳回資料之前加入一個ob_end_clean();函式就可以了。

相關推薦

php陣列修改

最近遇到一個問題,是關於json資料提交的時候,總是報出【object object】的錯誤,查了晚上需要資料,大部分的說法是json資料格式不規範導致的錯誤。一般建議說將dataType型別註釋掉。但是都試了一下都沒有解決。最後還懷疑是使用json_encode這個函式php版本的問題等等,都沒有解決。主要

陣列根據去除重複的value

function second_array_unique_bykey($arr, $key){  $tmp_arr = array();  foreach($arr as $k => $v)  {    if(in_array($v[$key], $tmp_arr))

js 陣列 字串 初始化

這兩天做專案時,要通過js傳遞一個帶有字串鍵名的二維陣列,可是傳遞到後臺,卻得到了false,使用了很多種方法都不行,今天特地來介紹一下:js  陣列初始化問題; 以及Ajax下傳遞帶有字串鍵名的陣列如何操作 一維陣列: 一維陣列可以使用數字,字串做建名。 var   da

php陣列按某個值排序(突然用到以往知識,算是臨時補充筆記吧)

print_r($arr);排序後Array ( [0] => Array ( [name] => 6 [age] => 21 ) [1] => Array (

php陣列刪除某個值相同的陣列

<?php $arr = array( '0'=>array( 'name'=>'james', 'age'=>30, ),

php陣列按某個值排序

function arrSort($arr,$field,$sort='asc'){$newArr = $sortArr = [];foreach($arr as $key=>$value){$newArr[$key] = $value[$field];}if($sor

PHP陣列去重的方法(保留各個值的同時去除重複的項)-- 陣列的唯一性

對於如下二維陣列,要求對其進行去重: $arr = array( '0'=>array( 'name'=>'james', 'age'=>30,

PHP陣列根據指定排序

//對二維陣列進行排序的函式 /** 引數說明 $arrays: 排序的陣列。 $sort_key: 排序的鍵。 $sort_order: SORT_ASC - 預設,按升序排列。(A-Z) SORT_DESC - 按降序排列。(Z-A) $s

php陣列去重即去掉重複值的子元素

案例1: Array (     [0] => Array         (             [0] => 2             [1] => 1505622764         )     [1] => Array      

php陣列指定某元素後面的值是和前面的值相加起來的

描述不清,直接上程式碼 $data = array( array('time'=>'2018-10-15','money'=>1,'count'=>5), array('time'=>'2018-10-16','money'=>2,'count'=>4),

php 陣列自定義排序

有時候需要對一個二維陣列進行排序,自定義對應的排序規則,比如對一個班級裡面的同學,先按身高降序排序,身高相同的,再按體重降序排序。。。 程式碼: <?php $array = [ ["id" => "1", "name" => "a", "age" => "19",]

php陣列去重

php二維陣列去重 前言:php一維陣列去重很簡單,直接array_unique($arr)即可,但是二維陣列去重就得自己去寫了 二維陣列去重方法: /* * 二維陣列去重 * 注意:二維陣列中的元素個數必須一致,且鍵值也得一致,否則無意義 * @param array $arr * @re

php陣列陣列

1.轉陣列 $hb=Db::table('sl_details')->where(['hid'=>$id])->where('pid','<>',0)->field('pid,moeny')->select();

PHP 陣列去重合並

以為其中一維陣列相同欄位合併,並且total欄位相加 $arr=array(5) { [0]=> array(3) { ["id"]=> string(1) "1" ["total"]=> string(1) "1" ["name

陣列求每學生的總成績和平均成績(c++中字串的輸出)

#include “stdafx.h” #include #include //可以輸出字串 using namespace std; int main() { int scores[3][4]; cout << “請輸入同學姓名以及成績!”<

PHP陣列的快速排序

/** * 二維陣列的快速排序(推薦) * @param Array $data 二維陣列 * @param string $field 所要排序的欄位 * @param string $order 正序或倒序 * @param boolean $isabs 是否比較絕對值 */ f

PHP 陣列 指定 value 作為 key || 陣列 取出指定 元素組成新陣列

// 基礎陣列 $array = [ array(5) { [0]=> array(2) { ["id"]=> string(1) "1" ["name"]=> string(21) "網站炒雞管理員"

php陣列根據某個欄位去重

php的二維陣列根據某個欄位去重,在這預設為二維陣列的結構是一樣的,現在根據二維數組裡的id欄位去重,把id相同的重複的元素去掉 /** * 二維陣列根據某個欄位去重 * @param array $array 二維陣列 * @para array 去重後的陣列 */ private funct

php陣列重新排序

Array ( Array ('id' => 3, 'username' => 'alex ','parentname'=> 'john'          ,'proname' => 'tttt' 'num'=> 1 ,  'userid' =

PHP 陣列按鍵值排序

PHP 中 array_multisort() 可以用來一次對多個數組進行排序,或者根據某一維或多維對多維陣列進行排序。關聯鍵名保持不變,但數字鍵名會被重新索引。輸入陣列被當成一個表的列並以行來排序,第一個陣列是要排序的主要陣列。陣列中的行(值)比較為相同的話就按照下一個輸入