目录
PHP 二维数组相关函数:二维数组转一维数组,二维数组指定key排序,两个二维数组取差集,对象转数组,判断元素是否在多维数组中,二维数组去重
一、二维数组转一维数组
function towarr_to_onearr($arr,$item)
{
foreach ($arr as $key => $value) {
$newArr[] = $value[$item];
}
return $newArr;
}
二、对二维数组进行指定key排序
/**
* @desc 对二维数组进行指定key排序
* @param $arr 二维数组
* @param $shortKey 需要排序的列
* @param $short 排序方式
* @param $shortType 排序类型
*/
function multi_array_sort($arr,$shortKey,$short=SORT_DESC,$shortType=SORT_REGULAR)
{
foreach ($arr as $key => $data){
$name[$key] = $data[$shortKey];
}
array_multisort($name,$shortType,$short,$arr);
return $arr;
}
三、二维数组转一维数组
/**
* @param $arr 数组
* @param $item 指定的项
*/
function towarr_to_onearr($arr,$item)
{
foreach ($arr as $key => $value) {
$newArr[] = $value[$item];
}
return $newArr;
}
四、两个二维数组取差集
/**
* @param $arr1 数组
* @param $arr2 数组
* @param $key 对比的值 唯一
*/
function get_diff_array($arr1,$arr2,$key)
{
$res = array();
foreach($arr1 as $v) {
$tmp[$v[$key]] = $v;
};
foreach($arr2 as $v) {
if(! isset($tmp[$v[$key]])) {
if (!empty($v)) {
$res[] = $v;
}
}
};
return $res;
}
五、对象转数组
/**
* @param $obj 对象
*/
function objToArray($obj)
{
return json_decode(json_encode($obj), true);
}
六、判断元素是否在多维数组中
/**
* 判断元素是否在多维数组中
* @param $str 需要判断的元素
* @param $array 数组
* @return bool
*/
function deep_in_array($str, $array) {
foreach($array as $item) {
if(!is_array($item)) {
if ($item == $str) {
return true;
} else {
continue;
}
}
if(in_array($str, $item)) {
return true;
} else if(deep_in_array($str, $item)) {
return true;
}
}
return false;
}
七、二维数组去重
思路:先遍历二维数组中的每个子数组,并转换成字符串,保存到新数组中,再对新数组去重,得到去重后的二维数组
function unique_arr($array)
{
$temp = array();
foreach ($array as $key => $value) {
$temp[$key] = implode(',', $value);
}
$temp = array_unique($temp);
$result = array();
foreach ($temp as $key => $value) {
$result[$key] = explode(',',$value);
}
return $result;
}