<?php
class ArrayToolkit
{
//筛选数组,返回关键词搜索的结果
public static function search($list,$sk=''){
$result=[];
if(empty($sk)){
return $list;
}
foreach ($list as $key => $item) {
$serialize=json_encode($item, JSON_UNESCAPED_UNICODE);
if(strpos($serialize,$sk)>0){
$result[$key]=$item;
}
}
return $result;
}
//数组排序。返回数组中按照某个字段排序后的结果
public static function my_array_multisort($data,$sort_order_field,$sort_order=SORT_DESC,$sort_type=SORT_STRING){
if(empty($data)){
return $data;
}
foreach($data as $val){
$key_arrays[]=$val[$sort_order_field];
}
array_multisort($key_arrays,$sort_order,$sort_type,$data);
return $data;
}
public static function get(array $array, $key, $default)
{
if (isset($array[$key])) {
return $array[$key];
} else {
return $default;
}
}
//返回数组中的某列字段,无该字段则返回空数组
public static function column(array $array, $columnName)
{
if (function_exists('array_column')) {
$column = array_column($array, $columnName);
return $column;
}
if (empty($array)) {
return array();
}
$column = array();
foreach ($array as $item) {
if (isset($item[$columnName])) {
$column[] = $item[$columnName];
}
}
return $column;
}
//在数组去掉指定键名的元素
public static function parts(array $array, array $keys)
{
foreach (array_keys($array) as $key) {
if (!in_array($key, $keys)) {
unset($array[$key]);
}
}
return $array;
}
//
public static function requireds(array $array, array $keys, $strictMode = false)
{
foreach ($keys as $key) {
if (!array_key_exists($key, $array)) {
return false;
}
if ($strictMode && (is_null($array[$key]) || $array[$key] === "" || $array[$key] === 0)) {
return false;
}
}
return true;
}
//对比两个数组前后发生了变化
public static function changes(array $before, array $after)
{
$changes = array('before' => array(), 'after' => array());
foreach ($after as $key => $value) {
if (!isset($before[$key])) {
continue;
}
if ($value != $before[$key]) {
$changes['before'][$key] = $before[$key];
$changes['after'][$key] = $value;
}
}
return $changes;
}
//将数组中变为array(['元素的某字段']=>'该元素')的数组
public static function group(array $array, $key)
{
$grouped = array();
foreach ($array as $item) {
if (empty($grouped[$item[$key]])) {
$grouped[$item[$key]] = array();
}
$grouped[$item[$key]][] = $item;
}
return $grouped;
}
//
public static function index(array $array, $name)
{
$indexedArray = array();
if (empty($array)) {
return $indexedArray;
}
foreach ($array as $item) {
if (isset($item[$name])) {
$indexedArray[$item[$name]] = $item;
continue;
}
}
return $indexedArray;
}
//为数组重新赋键名
public static function rename(array $array, array $map)
{
$keys = array_keys($map);
foreach ($array as $key => $value) {
if (in_array($key, $keys)) {
$array[$map[$key]] = $value;
unset($array[$key]);
}
}
return $array;
}
//
public static function filter(array $array, array $specialValues)
{
$filtered = array();
foreach ($specialValues as $key => $value) {
if (!array_key_exists($key, $array)) {
continue;
}
if (is_array($value)) {
$filtered[$key] = (array) $array[$key];
} elseif (is_int($value)) {
$filtered[$key] = (int) $array[$key];
} elseif (is_float($value)) {
$filtered[$key] = (float) $array[$key];
} elseif (is_bool($value)) {
$filtered[$key] = (bool) $array[$key];
} else {
$filtered[$key] = (string) $array[$key];
}
if (empty($filtered[$key])) {
$filtered[$key] = $value;
}
}
return $filtered;
}
public static function trim($array)
{
if (!is_array($array)) {
return $array;
}
foreach ($array as $key => $value) {
if (is_array($value)) {
$array[$key] = static::trim($value);
} elseif (is_string($value)) {
$array[$key] = trim($value);
}
}
return $array;
}
public static function every($array, $callback = null)
{
foreach ($array as $value) {
if ((is_null($callback) && !$value) || (is_callable($callback) && !$callback($value))) {
return false;
}
}
return true;
}
public static function some($array, $callback = null)
{
foreach ($array as $value) {
if ((is_null($callback) && $value) || (is_callable($callback) && $callback($value))) {
return true;
}
}
return false;
}
}
//调用
$a=new ArrayToolkit();
$before=array('张三','wrbxzhrzddjyhhdehjzysdl','23');
$after=array('lisi','里斯','20');
$re=$a::rename($before,$after); var_dump($re);die;