[{"data":1,"prerenderedAt":256},["ShallowReactive",2],{"blog:\u002Fblog\u002F2016\u002F12\u002F03\u002Fphp-objects-convert-to-and-from-arrays\u002F":3},{"id":4,"title":5,"body":6,"categories":241,"comments":243,"date":244,"description":245,"draft":246,"extension":247,"legacySlug":248,"meta":249,"navigation":243,"path":250,"seo":251,"stem":252,"tags":253,"updated":254,"__hash__":255},"blog\u002Fblog\u002F2016\u002F12\u002F03\u002Fphp-objects-convert-to-and-from-arrays.md","PHP对象与数组互相转换",{"type":7,"value":8,"toc":235},"minimark",[9,13,18,21,24,28,31,205,208,212,215,218,221,225,228,231],[10,11,12],"p",{},"工作中不可避免会遇到php对象与数组的相互转化，下边对其方法做了简单的总结。",[14,15,17],"h3",{"id":16},"_1强制转化","1.强制转化",[10,19,20],{},"arr = (array) ​obj;      obj = (object) ​arr;",[10,22,23],{},"优点：比较简洁 缺点：不能递归转化 适用范围：无嵌套数组，无嵌套类的转化",[14,25,27],{"id":26},"_2自定义方法","2.自定义方法",[10,29,30],{},"object2array ，array2object",[32,33,38],"pre",{"className":34,"code":35,"language":36,"meta":37,"style":37},"language-php shiki shiki-themes github-light github-dark","\u002F*  对象转为数组 *\u002F\nfunction object2array ($obj)\n{\n    $ret = array();\n    foreach ($obj as $key => $value)\n    {\n        if (gettype($value) == \"array\" || gettype($value) == \"object\") {\n            $ret[$key] = object2array($value);\n        } else {\n            $ret[$key] = $value;\n        }\n    }\n    return $ret;\n}\n\u002F*数组转对象 *\u002F\nfunction array2object ($arr)\n{\n    if (gettype($arr) != 'array') {\n        return;\n    }\n    foreach($arr as $k=>$v)\n    {\n        if (gettype($v) == 'array' || getType($v)=='object') {\n            $arr[$k] = array2object($v);\n        }\n    }\n    return (object) $arr;\n}\n","php","",[39,40,41,49,55,61,67,73,79,85,91,97,103,109,115,121,127,133,139,144,150,156,161,167,172,178,184,189,194,200],"code",{"__ignoreMap":37},[42,43,46],"span",{"class":44,"line":45},"line",1,[42,47,48],{},"\u002F*  对象转为数组 *\u002F\n",[42,50,52],{"class":44,"line":51},2,[42,53,54],{},"function object2array ($obj)\n",[42,56,58],{"class":44,"line":57},3,[42,59,60],{},"{\n",[42,62,64],{"class":44,"line":63},4,[42,65,66],{},"    $ret = array();\n",[42,68,70],{"class":44,"line":69},5,[42,71,72],{},"    foreach ($obj as $key => $value)\n",[42,74,76],{"class":44,"line":75},6,[42,77,78],{},"    {\n",[42,80,82],{"class":44,"line":81},7,[42,83,84],{},"        if (gettype($value) == \"array\" || gettype($value) == \"object\") {\n",[42,86,88],{"class":44,"line":87},8,[42,89,90],{},"            $ret[$key] = object2array($value);\n",[42,92,94],{"class":44,"line":93},9,[42,95,96],{},"        } else {\n",[42,98,100],{"class":44,"line":99},10,[42,101,102],{},"            $ret[$key] = $value;\n",[42,104,106],{"class":44,"line":105},11,[42,107,108],{},"        }\n",[42,110,112],{"class":44,"line":111},12,[42,113,114],{},"    }\n",[42,116,118],{"class":44,"line":117},13,[42,119,120],{},"    return $ret;\n",[42,122,124],{"class":44,"line":123},14,[42,125,126],{},"}\n",[42,128,130],{"class":44,"line":129},15,[42,131,132],{},"\u002F*数组转对象 *\u002F\n",[42,134,136],{"class":44,"line":135},16,[42,137,138],{},"function array2object ($arr)\n",[42,140,142],{"class":44,"line":141},17,[42,143,60],{},[42,145,147],{"class":44,"line":146},18,[42,148,149],{},"    if (gettype($arr) != 'array') {\n",[42,151,153],{"class":44,"line":152},19,[42,154,155],{},"        return;\n",[42,157,159],{"class":44,"line":158},20,[42,160,114],{},[42,162,164],{"class":44,"line":163},21,[42,165,166],{},"    foreach($arr as $k=>$v)\n",[42,168,170],{"class":44,"line":169},22,[42,171,78],{},[42,173,175],{"class":44,"line":174},23,[42,176,177],{},"        if (gettype($v) == 'array' || getType($v)=='object') {\n",[42,179,181],{"class":44,"line":180},24,[42,182,183],{},"            $arr[$k] = array2object($v);\n",[42,185,187],{"class":44,"line":186},25,[42,188,108],{},[42,190,192],{"class":44,"line":191},26,[42,193,114],{},[42,195,197],{"class":44,"line":196},27,[42,198,199],{},"    return (object) $arr;\n",[42,201,203],{"class":44,"line":202},28,[42,204,126],{},[10,206,207],{},"优点：可以处理嵌套 缺点：需添加对应函数到系统 适用范围：ALL",[14,209,211],{"id":210},"_3利用内置函数","3.利用内置函数",[10,213,214],{},"json_decode(json_encode(arr), false)",[10,216,217],{},"json_decode(json_encode(arr), true)",[10,219,220],{},"优点：简洁、可处理嵌套 缺点：每次转化都是先执行一次json_encode,再执行一次json_decode，直观判断运行效率会低一些 适用范围：ALL",[14,222,224],{"id":223},"特别注意","特别注意：",[10,226,227],{},"1.arr = (array) ​obj;这种转换对象的方法，public、private、protected属性都能转化，而其他两种方法则只能转化public属性",[10,229,230],{},"2.无论哪种方法都是只转化类的属性，不转化类的方法",[232,233,234],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":37,"searchDepth":51,"depth":51,"links":236},[237,238,239,240],{"id":16,"depth":57,"text":17},{"id":26,"depth":57,"text":27},{"id":210,"depth":57,"text":211},{"id":223,"depth":57,"text":224},[242],"PHP",true,"2016-12-03 22:39:01","工作中不可避免会遇到php对象与数组的相互转化，下边对其方法做了简单的总结。 1.强制转化 arr = (array) ​obj; obj = (object) ​arr; 优点：比较简洁 缺点：不能递归转化 适用范围：无嵌套数组，无嵌套类的转化 2.自定义方法 object2array ，arra",false,"md","php-objects-convert-to-and-from-arrays",{},"\u002Fblog\u002F2016\u002F12\u002F03\u002Fphp-objects-convert-to-and-from-arrays",{"title":5,"description":245},"blog\u002F2016\u002F12\u002F03\u002Fphp-objects-convert-to-and-from-arrays",[242],null,"i0FktgLPAM4VQvqDJrohplJM7ff3Kj0I8ehSQslN11A",1783807996125]