脚本宝典收集整理的这篇文章主要介绍了在PHP中将对象转换为数组的最快方法是什么?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经尝试了几种最常用的方法并计算了结果.我意识到对象的深度会产生很大的影响,每个级别的子对象的数量也会很大.如果有人认为他们认为更快,我很好奇.下面是我的代码使用我可以告诉的两种最常见的方法.我需要一些示例数据,所以我从一个示例XML文件中提取它.
<?PHP $xML = file_get_contents("http://www.w3schools.COM/xml/cd_cataLOG.xml"); //load XML string into SimpleXML object $xmlObj = simplexml_load_string($xml); /* Method 1 Recursive tyPEcastingPHP: Recursively convert an object to an array*/ function objToArrayRecursiveTypecast($obj) { if(is_object($obj)) $obj = (array) $obj; if(is_array($obj)) { $new = array(); foreach($obj as $key => $val) { $new[$key] = objToArrayRecursiveTypecast($val); } } else $new = $obj; return $new; } $method1StartTime = microtime(true); $method1Results = objToArrayRecursiveTypecast($xmlObj); $method1EndTime = microtime(true); $method1ExecTime = $method1EndTime - $method1StartTime; /* Method 2 json_encode json_decode Appears in code everywhere */ $method2StartTime = microtime(true); $method2Results = json_decode(json_encode($xmlObj),true); $method2EndTime = microtime(true); $method2ExecTime = $method2EndTime - $method2StartTime; /* Method 3 Recursive object read and array assignment Answer in https://stackoverflow.com/questions/4345554/convert-PHP-object-to-associative-array */ function object_to_array_recursive( $object,$assoc=TRUE,$empty='' ) { $res_arr = array(); if (!empty($object)) { $arrObj = is_object($object) ? get_object_VARs($object) : $object; $i=0; foreach ($arrObj as $key => $val) { $akey = ($assoc !== FALSE) ? $key : $i; if (is_array($val) || is_object($val)) { $res_arr[$akey] = (empty($val)) ? $empty : object_to_array_recursive($val); } else { $res_arr[$akey] = (empty($val)) ? $empty : (string)$val; } $i++; } } return $res_arr; } $method3StartTime = microtime(true); $method3Results = object_to_array_recursive($xmlObj); $method3EndTime = microtime(true); $method3ExecTime = $method3EndTime - $method3StartTime; /* Method 4 Array map method https://stackoverflow.com/questions/2476876/how-do-i-convert-an-object-to-an-array/2476954#2476954 */ function arrayMapObjectToArray($object) { if(!is_object($object) && !is_array($object)) return $object; return array_map('arrayMapObjectToArray',(array) $object); } $method4StartTime = microtime(true); $method4Results = arrayMapObjectToArray($xmlObj); $method4EndTime = microtime(true); $method4ExecTime = $method4EndTime - $method4StartTime; //output results echo "Method 1 time to execute: $method1ExecTime \n"; echo "Method 2 time to execute: $method2ExecTime \n"; echo "Method 3 time to execute: $method3ExecTime \n"; echo "Method 4 time to execute: $method4ExecTime \n"; ?>
Method 1 time to execute: 0.00066113471984863 Method 2 time to execute: 0.00059700012207031 Method 3 time to execute: 0.00090503692626953 Method 4 time to execute: 0.00050783157348633 Method 1 time to execute: 0.00066494941711426 Method 2 time to execute: 0.00057506561279297 Method 3 time to execute: 0.00089788436889648 Method 4 time to execute: 0.00052714347839355 Method 1 time to execute: 0.00067400932312012 Method 2 time to execute: 0.00057005882263184 Method 3 time to execute: 0.0009000301361084 Method 4 time to execute: 0.00051212310791016
以上是脚本宝典为你收集整理的在PHP中将对象转换为数组的最快方法是什么?全部内容,希望文章能够帮你解决在PHP中将对象转换为数组的最快方法是什么?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。