PHP中把对象转数组的几个方法:
1.
//PHP stdClass Object转array
function object_array($array) {
if(is_object($array)) {
$array = (array)$array;
}
if(is_array($array)) {
foreach($array as $key=>$value) {
$array[$key] = object_array($value);
}
}
return $array;
}
2.
$array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);
3.
function object2array_pre(&$object) {
if (is_object($object)) {
$arr = (array)($object);
} else {
$arr = &$object;
}
if (is_array($arr)) {
foreach($arr as $varName => $varValue){
$arr[$varName] = $this->object2array($varValue);
}
}
return $arr;
}
4.如果是10W的数据量的话,执行要进1s,结构再复杂些,可以达到3s,性能太差了,可以用以下替换:(最优)
function object2array(&$object) {
$object = json_decode( json_encode( $object),true);
return $object;
}
应用
//对象转数组
//对象转数组
$shareRankList =  json_decode( json_encode( $shareRankList),true);
//如果键值 是无序的,会直接转换对象大括号,需要sort 重置
sort($shareRankList);
//取的键值 再搜索对应的值的 返回key
$referrer_unqid_arr = array_column($shareRankList,'unqid');
$myRankNumber = array_search($user['unqid'],$referrer_unqid_arr);
$myShareRank=$shareRank=[];
if($myRankNumber !== false){
    $myShareRank[0] = $shareRankList[$myRankNumber];
    $myShareRank[0]['sortId'] = $myRankNumber+1;
}
$shareRank = [
    'myShareRank' => empty($myShareRank) ? [] : $myShareRank,//我的排行榜
    'shareRankList' => empty($shareRankList) ? [] : $shareRankList,//分享排行榜
];
当array是一个从0开始的连续数组时,json_encode出来的结果是一个由[]括起来的字符串。
而当array是不从0开始或者不连续的数组时,json_encode出来的结果是一个由{}括起来的key-value模式的字符串。
array_search(value,array,strict)
array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,则返回匹配该元素所对应的键名。如果没找到,则返回 false。注意在 PHP 4.2.0 之前,函数在失败时返回 null 而不是 false。同样如果第三个参数 strict 被指定为 true,则只有在数据类型和值都一致时才返回相应元素的键名。
(文章今日已有 1 人访问,总访问量 10 ::>_<::)