php對象轉數組的黑技術(php數組和對象)

  • 1、PHP中把對象轉數組的幾個方法
  • 2、總結幾個對象轉數組的方法
  • 3、php怎麼把對象轉為數組
  • 4、如何將PHP對象數組轉換成普通數組
  • 5、PHP中怎麼把對象轉換為關聯數組
  • 6、PHP把對象轉換成數組

你可以循環一下,用新數組[‘key’]=舊對象-key。

也可以這樣:

$array =json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);

在利用jQuery EasyUI框架進行程序開發時,碰到前台將JSON格式數據傳遞到服務器後台,經php的json_decode函數轉換成的數組由於為對象數組,php程序無法對數據進行正常處理的情況,為此需要開發一個PHP回調函數(objarray_to_array)將對象數組轉換成普通數組。

/**

* 對象數組轉為普通數組

*

* AJAX提交到後台的JSON字串經decode解碼後為一個對象數組,

* 為此必須轉為普通數組後才能進行後續處理,

* 此函數支持多維數組處理。

*

* @param array

* @return array

*/

function objarray_to_array($obj) {

$ret = array();

foreach ($obj as $key = $value) {

if (gettype($value) == “array” || gettype($value) == “object”){

$ret[$key] = objarray_to_array($value);

}else{

$ret[$key] = $value;

}

}

return $ret;

}

這裡定義2個php匿名對象和數組相互轉換的函數,代碼如下:

function array2object($array) {

if (is_array($array)) { $obj = new StdClass(); foreach ($array as $key = $val){ $obj-$key = $val; } } else { $obj = $array; } return $obj;}function object2array($object) { if (is_object($object)) { foreach ($object as $key = $value) { $array[$key] = $value; } } else { $array = $object; } return $array;}

用法示例如下:

$array = array(‘foo’ = ‘bar’,’one’ = ‘two’,’three’ = ‘four’);$obj = array2object($array);print $obj-one; // output’s “two”$arr = object2array($obj);print $arr[‘foo’]; // output’s bar

在利用jQuery EasyUI框架進行程序開發時,碰到前台將JSON格式數據傳遞到服務器後台,經php的json_decode函數轉換成的數組由於為對象數組,php程序無法對數據進行正常處理的情況,為此需要開發一個PHP回調函數(objarray_to_array)將對象數組轉換成普通數組。

/**

* 對象數組轉為普通數組

*

* AJAX提交到後台的JSON字串經decode解碼後為一個對象數組,

* 為此必須轉為普通數組後才能進行後續處理,

* 此函數支持多維數組處理。

*

* @param array

* @return array

*/

function objarray_to_array($obj) {

$ret = array();

foreach ($obj as $key = $value) {

if (gettype($value) == “array” || gettype($value) == “object”){

$ret[$key] = objarray_to_array($value);

}else{

$ret[$key] = $value;

}

}

return $ret;

}

可以用函數get_object_vars將對象轉換為屬性組成的關聯數組,其語法如下:

$arr1=get_object_vars($obj);//$obj為需要轉換的對象,下同

也可以用強制類型轉換,如:

$arr1=(array)$obj;

或者這樣:

$arr1=settype($obj,”array”);

你這種寫法更適合想要把私有或者保護的屬性取出來。

如果只是公有屬性,完全可以使用更方便的做法:

$res = json_decode(json_encode($obj),true);

$obj是原始對象,$res則是數組了。

原創文章,作者:TRSV0,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/126172.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TRSV0的頭像TRSV0
上一篇 2024-10-03 23:06
下一篇 2024-10-03 23:07

相關推薦

  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python去掉數組的中括號

    在Python中,被中括號包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括號。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python熱重載技術

    Python熱重載技術是現代編程的關鍵功能之一。它可以幫助我們在程序運行的過程中,更新代碼而無需重新啟動程序。本文將會全方位地介紹Python熱重載的實現方法和應用場景。 一、實現…

    編程 2025-04-29
  • 面向對象編程、類和對象

    面向對象編程(Object-Oriented Programming, OOP)是一種編程方法,它將現實世界中的事物抽象為對象(Object),對象的屬性和方法被封裝成類(Clas…

    編程 2025-04-29
  • Python包絡平滑技術解析

    本文將從以下幾個方面對Python包絡平滑技術進行詳細的闡述,包括: 什麼是包絡平滑技術? Python中使用包絡平滑技術的方法有哪些? 包絡平滑技術在具體應用中的實際效果 一、包…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字符串進行格式化處理。 names = [‘A…

    編程 2025-04-29
  • Java創建一個有10萬個元素的數組

    本文將從以下方面對Java創建一個有10萬個元素的數組進行詳細闡述: 一、基本介紹 Java是一種面向對象的編程語言,其強大的數組功能可以支持創建大規模的多維數組以及各種複雜的數據…

    編程 2025-04-28
  • 微信小程序重構H5技術方案設計 Github

    本文旨在探討如何在微信小程序中重構H5技術方案,以及如何結合Github進行代碼存儲和版本管理。我們將從以下幾個方面進行討論: 一、小程序與H5技術對比 微信小程序與H5技術都可以…

    編程 2025-04-28

發表回復

登錄後才能評論