function array_columns(array $array, $column_keys = [], $index_key = null) {
if ($column_keys && is_array($column_keys)) {
$newArray = [];
foreach ($column_keys as $c => $column_key) {
$tempArrs = array_column($array, $column_key, $index_key);
foreach ($tempArrs as $t => $tempArr) {
$newArray[$t][$column_key] = $tempArr;
}
}
return $newArray;
} else {
return [];
}
}
function array_diff_deep() {
$args = func_get_args();
$array = array_shift($args);
$droped = [];
foreach ($array as $key => $value) {
if (!in_array($key, $droped)) {
foreach ($args as $a => $arg) {
if (is_array($value) && is_array($arg[$key])) {
//都是数组
if (count($value) == count($arg[$key])) {
//数量相等深度对比
$diff = array_diff_deep($value, $arg[$key]);
if ($diff) {
array_push($droped, $key);
}
} else {
//数量不等直接否定
array_push($droped, $key);
}
} else {
if (is_numeric($value) && is_numeric($arg[$key])) {
//都是数字不比类型只对比值
if ($value != $arg[$key]) {
array_push($droped, $key);
}
} else {
//其他情况比较类型和值
if ($value !== $arg[$key]) {
array_push($droped, $key);
}
}
}
}
}
}
return array_columns([$array], $droped)[0]; //返回不相同的信息
}
array_diff_assoc 元素是数组时不比较数组值的办法
最新推荐文章于 2022-11-11 14:32:28 发布