简单粗暴 ⛽️
以下函数都为实际项目中用到,没有收藏原文地址。
原创大佬看到后,进行留言,我再加上您的原文地址。
PHP 二维数组按某个键转为一维数组
$array = array_column($array, $key);
PHP 二维数组按某个键的值设置为数组新的下标
$array = array_column($array, null, $key);
PHP 二维数组排序
/**
* 二维数组 排序
* @param [array] $array 排序数组
* @param [string] $key 进行排序的键
* @param [string] $order 升序|降序 (asc|desc)
* @return [array] $arr 排序后的数组
*/
function arraySort($array, $key, $order = "asc") {//asc是升序 desc是降序
$arr_nums = $arr = array();
foreach ($array as $k => $v) {
$arr_nums[$k] = $v[$key];
}
if ($order == 'asc') {
asort($arr_nums);
} else {
arsort($arr_nums);
}
foreach ($arr_nums as $k => $v) {
$arr[$k] = $array[$k];
}
return $arr;
}
PHP 二维数组按某个键去掉重复值
/**
* 二维数组去掉重复值
* @param [array] $arr 操作数组
* @param [string] $key 判断的key值
* @return [array] $res 处理后的数组
*/
function array_unset($arr,$key){
//建立一个目标数组
$res = array();
foreach ($arr as $value) {
//查看有没有重复项
if(isset($res[$value[$key]])){
unset($value[$key]); //有:销毁
}else{
$res[$value[$key]] = $value;
}
}
return $res;
}
PHP 二维数组根据某个键分组
/**
* 二维数组根据某个键分组
* @param [array] $arr 要处理的数组
* @param [string] $key 键值
* @return [array] $grouped 分组后的数据
*/
function arrayGroupBy($arr, $key){
$grouped = [];
foreach ($arr as $value) {
$grouped[$value[$key]][] = $value;
}
if (func_num_args() > 2) {
$args = func_get_args();
foreach ($grouped as $key => $value) {
$parms = array_merge([$value], array_slice($args, 2, func_num_args()));
$grouped[$key] = call_user_func_array('arrayGroupBy', $parms);
}
}
return $grouped;
}
PHP 将 xml 转为数组
/**
* PHP 将 xml 转为数组
* @param [string] $xml xml字符串或者xml文件名
* @param [bool] $isfile 传入的是否是xml文件名
* @return [array] $result 转换得到的数组
*/
function xmlToArray($xml,$isfile=false){
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
if($isfile){
if(!file_exists($xml)) return false;
$xmlstr = file_get_contents($xml);
}else{
$xmlstr = $xml;
}
$result= json_decode(json_encode(simplexml_load_string($xmlstr, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $result;
}
PHP 将数组转为 xml
/**
* PHP 将数组转为 xml
* @param [array] $data 需要转换的数组
* @return [string] $xml xml字符串
**/
function arrayToXml($data){
if(!is_array($data) || count($data) <= 0){
return false;
}
$xml = "<xml>";
foreach ($data as $key=>$val){
if (is_numeric($val)){
$xml.="<".$key.">".$val."</".$key.">";
}else{
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
}
$xml.="</xml>";
return $xml;
}
PHP 生成树状数据
/**
* PHP 生成树状数据
* @param [array] $data 二维数组
* @param [string] $parent_key 原始数据父级字段
* @param [string] $child_key 生成子集的字段
* @return [array] 树状数据
*/
function treeArray($data,$parent_key,$child_key){
$tree = array();
foreach ($data as $key => $val) {
if ($val[$parent_key] == 0) {
$tree[] = &$data[$key];
} else {
$data[$val[$parent_key]][$child_key][] = &$data[$key];
}
}
return $tree;
}
PHP 生成树状数据
/**
* PHP 生成树状数据
* @param [array] $data 二维数组
* @param [string] $parent_key 原始数据父级字段
* @param [string] $child_key 生成子集的字段
* @return [array] 树状数据
*/
function generateTree($items,$parent_key = 'parent_id',$child_key = 'children'){
$tree = array();
foreach($items as $k => $item){
if(isset($items[$item[$parent_key]])){
$items[$item[$parent_key]][$child_key][] = &$items[$k];
}else{
$tree[] = &$items[$k];
}
}
return $tree;
}
PHP 生成树状数据
/**
* PHP 生成树状数据
* @param [array] $array 要处理的数组
* @param [string] $pid 父ID
* @param [string] $level 等级
* @return [array] $list 分组后的数据
*/
function array2level($array, $pid = 0, $level = 1) {
static $list = [];
foreach ($array as $v) {
if ($v['parentid'] == $pid) {
$v['level'] = $level;
$list[] = $v;
$this->array2level($array, $v['id'], $level + 1);
}
}
return $list;
}