ä»£ç æå宿ï¼é¡µé¢å°èªå¨å·æ°
<?php
/**
* æ°ç»æ ¼å¼å叮婿å¡
* @author lidy 2021å¹´6æ18æ¥10:20:28
*
*/
class ArrayHelpService
{
/**
* éè¿æ°ç»ä¸æ è·åä¸ä¸ªæ 䏿 çç®åä¸ç»´æ°ç»
* @param array $ary
* @param string $key
* @return array
* @author lidy 2021å¹´6æ18æ¥10:25:51
*/
public static function getSimpleArray($ary, $key) {
$data = array();
foreach ($ary as $k => $val) {
$data[] = $val[$key];
}
return $data;
}
/**
* æ¥è¯¢æä¸ªå¤é®çä¿¡æ¯
*
* @param [type] $list
* @param [type] $key
* @param [type] $dataService
* @return array
* @author lidy 2021å¹´6æ18æ¥10:25:43
*/
public static function getValueList($dataService,$list,$key,$foreign_key='id'){
$id_arr = self::getSimpleArray($list,$key);
$l = $dataService->getAll($id_arr);
$l = array_column($l,null,$foreign_key);
return $l;
}
/**
* è·åæ°ç»ä¸æä¸ªå¼
*
* @param array $arr æ°ç»
* @param string $key keyå¼
* @param string $index ç´¢å¼å¼
* @return string 妿åå¨åè¿åå¼ï¼å¦åè¿åé»è®¤å¼
* @author lidy 2021å¹´6æ18æ¥10:25:20
*/
public static function getValueByKey($arr,$index,$key,$default=""){
$str_value = $default;
if(isset($arr[$index])){
$str_value = $arr[$index][$key];
}
return $str_value;
}
/**
* å°æ¶é´æ³åæ®µè½¬æ¢ææ¥ææ ¼å¼
* @param array $data
* @param string $key
* @param string $format
* @return array
* @author lidy 2021å¹´6æ18æ¥10:25:02
*/
public static function filterDatetime($data, $key, $format = 'Y-m-d H:i:s') {
if (is_array($data)) {
foreach ($data as $k => $val) {
$data[$k][$key] = date($format, $data[$k][$key]);
}
}
return $data;
}
/**
* è¿æ»¤ä¸ç»´æ°ç»ä¸å¼æ¯éæ°åæå¼ä¸º0ç项
*
* @param array $ary
* @return bool|array
* @author lidy 2021å¹´6æ18æ¥10:24:48
*/
public static function filterNumber($ary) {
if (!is_array($ary) || empty($ary)) {
return false;
}
$_ary = array();
foreach ($ary as $k => $val) {
$val = intval($val);
if ($val > 0) {
$_ary[] = $val;
}
}
if (empty($_ary)) {
return false;
}
return $_ary;
}
/**
* getCol è·åäºç»´æ°ç»ä¸æå®çå
*
* @param array $data å¿
须为äºç»´æ°ç»
* @param string $keyWord æè¦åçé®å
* @param string $key åé®å
* @return array
* @author lidy 2021å¹´6æ18æ¥10:24:37
*/
public static function getCol($data, $keyword, $key = null) {
if (!is_array($data)) {
return false;
}
$result = array();
if ($key && is_string($key)) {
foreach ($data as $value) {
$result[$value[$key]] = $value[$keyword];
}
} else {
foreach ($data as $value) {
$result[] = $value[$keyword];
}
}
return $result;
}
/**
* rebuildByCol
* æ ¹æ®æä¸ªåæ®µæè¯¥å段çå¼å½æ°ç»çKEYéç»æ°ç»
* ä¾å¦ $a = array(
* array('uId' => '1', 'data' => 'test'),
* array('uId' => '2', 'data' => 'test2')
* )
* ArrayHelpService::rebuildByCol($a, 'uId');
* ä¼å¾å°ï¼
* array(
* '1' => array('uId' => '1', 'data' => 'test'),
* '2' => array('uId' => '2', 'data' => 'test2')
* )
*
* @param array $data äºç»´æ°ç»
* @param string $keyword åæ®µå
* @return array
* @author lidy 2021å¹´6æ18æ¥10:24:28
*/
public static function rebuildByCol($data, $keyword) {
// æ æ°æ®åæ ·è¿å
if (!$data) {
return $data;
}
$result = array();
foreach ($data as $value) {
if (is_object($value)) {
$result[$value->$keyword] = $value;
} else {
$result[$value[$keyword]] = $value;
}
}
return $result;
}
/**
* rebuildMultiByCol
* 对rebuildByCol çå¢å¼ºçï¼ä¼æ ¹æ®keywordçæä¸ä¸ªäºç»´æ°ç», ä¸å¯¹å¤å
³ç³»
* ä¾å¦ $a = array(
* array('uId' => '1', 'data' => 'test'),
* array('uId' => '2', 'data' => 'test2')
* array('uId' => 1, 'data' => 'test2')
* )
* ArrayHelpService::rebuildByCol($a, 'uId');
* ä¼å¾å°ï¼
* array(
* '1' => array(array('uId' => '1', 'data' => 'test'), array('uId)=>
* '2' => array('uId' => '2', 'data' => 'test2')
* )
*
* @param array $data äºç»´æ°ç»
* @param string $keyword åæ®µå
* @return array
* @author lidy 2021å¹´6æ18æ¥10:24:20
*/
public static function rebuildMultiByCol($data, $keyword, $secKey = null) {
if (empty($data) || !is_array($data)) {
return $data;
}
$result = array();
if (isset($secKey)) {
foreach ($data as $value) {
$result[$value[$keyword]][$value[$secKey]] = $value;
}
} else {
foreach ($data as $value) {
$result[$value[$keyword]][] = $value;
}
}
return $result;
}
/**
* äºç»´æ°æ®å·¦è¿æ¥
*
* @param array $left_array å·¦æ°ç»
* @param array $right_array 峿°ç»
* @param string $left_field å·¦æ°ç»è¦è¿æ¥çåæ®µå
* @param string $right_field 峿°ç»è¦è¿æ¥çåæ®µå
* @return array
* @author lidy 2018å¹´7æ17æ¥18:35:39
*/
public static function leftJoinRrray(array $left_array, array $right_array, $left_field, $right_field = NULL) {
$result = array();
//峿°ç»è¦è¿æ¥çåæ®µå为空æ
åµ
if (empty($right_field)) {
$right_field = $left_field;
}
foreach ($left_array as $left_key => $left_value) {
foreach ($right_array as $right_value) {
if ($left_value[$left_field] == $right_value[$right_field]) {
$result[$left_key] = array_merge($right_value, $left_value);
break;
}
}
if ($left_value[$left_field] !== $right_value[$right_field]) {
$result[$left_key] = $left_value;
foreach ($right_value as $right_value_key => $right_value_val) {
//å°å·¦æ°ç»æ²¡æçåæ®µç½®ç©º
if (!isset($result[$left_key][$right_value_key])) {
$result[$left_key][$right_value_key] = null;
}
}
unset($right_value_key, $right_value_val);
}
unset($right_value);
}
return $result;
}
/**
* æ ¹æ®äºç»´æ°ç»æä¸ªå段ç弿¥æ¾æ°ç»
* @author lidy 2021å¹´6æ18æ¥10:23:58
* @param array $array
* @param string $index
* @param string $value
* @return array
*/
public static function findByValue($array, $index, $value) {
$newarray = array();
if (is_array($array) && count($array) > 0) {
foreach (array_keys($array) as $key) {
$temp[$key] = $array[$key][$index];
if ($temp[$key] == $value) {
array_push($newarray,$temp[$key]);
}
}
}
return $newarray;
}
/**
* éæ°æåºæ°ç»
* @param $array éè¦æåºçæ°ç»
* @param $keys éè¦æ ¹æ®æä¸ªkeyæåº
* @param string $sort ååè¿æ¯é¡ºåº
* @return array
* @author lidy 2018å¹´8æ6æ¥16:51:39
*/
public static function arraySort($array,$keys,$sort='asc') {
$newArr = $valArr = array();
foreach ($array as $key=>$value) {
$valArr[$key] = $value[$keys];
}
($sort == 'asc') ? asort($valArr) : arsort($valArr);//å
å©ç¨keys对æ°ç»æåºï¼ç®çæ¯æç®æ æ°ç»çkeyæå¥½åº
reset($valArr); //æéæåæ°ç»ç¬¬ä¸ä¸ªå¼
foreach($valArr as $key=>$value) {
$newArr[] = $array[$key];
}
return $newArr;
}
/**
* 对æ¥è¯¢ç»æéè¿è¡æåº
* @access public
* @param array $list æ¥è¯¢ç»æ
* @param string $field æåºçåæ®µå
* @param array $sortby æåºç±»å
* ascæ£åæåº descéåæåº natèªç¶æåº
* @return array
* @author lidy 2018å¹´8æ10æ¥16:39:42
*/
public function listSortBy($list, $field, $sortby = 'asc')
{
if (is_array($list)) {
$refer = $resultSet = array();
foreach ($list as $i => $data)
$refer[$i] = &$data[$field];
switch ($sortby) {
case 'asc': // æ£åæåº
asort($refer);
break;
case 'desc':// éåæåº
arsort($refer);
break;
case 'nat': // èªç¶æåº
natcasesort($refer);
break;
}
foreach ($refer as $key => $val)
$resultSet[] = &$list[$key];
return $resultSet;
}
return false;
}
/**
* äºç»´æ°ç»éåè·åæå®å段
* @param $array array äºç»´æ°ç»
* @param $keys array æ°ç»key
* @param array $default é»è®¤è¿åå¼
* @return mixed
* @author lidy 2018å¹´8æ10æ¥18:11:25
*
* begin
* $list = array(
* array('id'=>1,'name'=>'a','age'=>10),
* array('id'=>2,'name'=>'a','age'=>10),
* array('id'=>3,'name'=>'a','age'=>10),
* array('id'=>4,'name'=>'a','age'=>10),
* )
*
* ä½¿ç¨æ¹å¼ ArrayHelpService::getValues($list,['id','name'])
* $list = array(
* array('id'=>1,'name'=>'a'),
* array('id'=>2,'name'=>'a'),
* array('id'=>3,'name'=>'a'),
* array('id'=>4,'name'=>'a'),
* )
*
*
*
*/
public static function getValues($array, $keys = array(), $default = array())
{
if (is_array($keys)) {
$return = array();
foreach ($array as $k => $v) {
foreach ($keys as $key) {
$return[$k][$key] = self::getValue($v, $key, $default);
}
}
return $return;
} else {
return self::getValue($array, $keys, $default);
}
}
/**
* è·åæå®åå¼ - ä¸å¯åç¬ä½¿ç¨ - 使ç¨ä¸é¢ getValues æ¹æ³è°ç¨
* @param $array
* @param $key
* @param null $default
* @return mixed|null
*/
private static function getValue($array, $key, $default = null)
{
if ($key instanceof \Closure) {
return $key($array, $default);
}
if (is_array($key)) {
$lastKey = array_pop($key);
foreach ($key as $keyPart) {
$array = static::getValue($array, $keyPart);
}
$key = $lastKey;
}
if (is_array($array) && array_key_exists($key, $array)) {
return $array[$key];
}
if (($pos = strrpos($key, '.')) !== false) {
$array = static::getValue($array, substr($key, 0, $pos), $default);
$key = substr($key, $pos + 1);
}
if (is_object($array)) {
return $array->$key;
} elseif (is_array($array)) {
return array_key_exists($key, $array) ? $array[$key] : $default;
} else {
return $default;
}
}
/**
* äºç»´æ°ç»è½¬ä¸ç»´
* @param $array
* @return array
* @author lidy 2021å¹´6æ18æ¥10:35:42
*/
public static function twoArrayToOneArray($array)
{
$callback_data = [];
foreach ($array as $row){
if(empty($row)){
continue;
}
foreach ($row as $one_array){
$callback_data[] = $one_array;
}
}
return $callback_data;
}
/**
* æ ¼å¼åæ°æ®
* [
* [$field_key] => [$fields] 示ä¾ï¼ [id] => ['id','title','status']
* ]
* @param array $data åå§æ°æ®
* @param array $fields éè¦ååºçåæ®µ
* @param string $field_key 设置为æ°ç»keyçåæ®µ
* @return array
* @author lidy 2019å¹´6æ5æ¥19:33:01
*/
public static function formatDataWithKeyValue($data = [], $fields = [], $field_key = '')
{
$result = [];
if (!$data) {
return $result;
}
if (!is_array($data)) {
$data = array($data);
}
if (empty($fields)) {
foreach ($data as $key => $value) {
if (!empty($field_key) && !empty($value[$field_key])) {
$result[$value[$field_key]] = $value;
} else {
$result[] = $value;
}
}
} else {
$tmp = [];
foreach ($data as $key => $value) {
foreach ($fields as $single) {
//妿keyå¼åå¨ï¼ è¿å key => fields æ°ç»
if (!empty($field_key) && !empty($value[$field_key])) {
$tmp[$value[$field_key]][$single] = !empty($value[$single]) ? $value[$single] : '';
} else {
//keyå¼ä¸åå¨ï¼è¿åfields
$tmp[$single] = !empty($value[$single]) ? $value[$single] : '';
}
}
if(!empty($field_key) && !empty($value[$field_key])){
$result = $tmp;
}else{
$result[] = $tmp;
}
}
}
return $result;
}
/**
* æ°ç»åç»
* @param $dataArr éè¦åç»çæ°æ®
* @param $keyStr æå®åç»å段
* @return array
* @author lidy 2019å¹´7æ12æ¥17:07:58
*/
public static function dataGroup($dataArr, $keyStr)
{
$newArr = [];
foreach ($dataArr as $k => $val) {
$newArr[$val[$keyStr]][] = $val;
}
return $newArr;
}
/**
* å 餿°ç»é颿å®çkey以åkey对åºçæ°æ® - æ¯æä¸ç»´äºç»´æ°ç»
* @param Array $data è¦æ¥æ¾çæ°ç»
* @param String $filed è¦å»é¤çkeyåæ®µ - ä¾å¦ï¼status,id,uid,create_time,update_time
* @return Array
* @author lidy 2019å¹´12æ10æ¥20:01:21
*/
public static function unsetArrayFindKey($data, $filed = '')
{
if(empty($filed)){
return $data;
}
$fileds = explode(',',$filed);
foreach($data as $key => &$val){
if(is_integer($key)){
foreach($val as $k => $v){
if(in_array($k,$fileds)){
unset($val[$k]);
}
}
}else{
if(in_array($key,$fileds)){
unset($data[$key]);
}
}
}
return $data;
}
/**
* å 餿°ç»ä¸ä¸ºç©ºçå¼
* @param $data - éè¦å¤ççæ°æ®
* @author lidy 2020å¹´2æ28æ¥15:00:13
* @return Array
*/
public static function unsetArrayEmpty($data)
{
if(empty($data)){
return [];
}
foreach($data as $key => $val){
if(empty($val)){
unset($data[$key]);
}
}
return array_merge($data,[]);
}
/**
* å¯¹è±¡è½¬æ¢æ°ç»
*
* @param object stdclassobject éè¦è½¬æ¢ä¸ºæ°ç»ç对象
* @return array
* @author lidy 2020å¹´6æ17æ¥17:51:16
*/
public static function stdClassObjectToArray($stdclassobject)
{
$array = is_object($stdclassobject) ? get_object_vars($stdclassobject) : $stdclassobject;
foreach ($array as $key => $value) {
$value = (is_array($value) || is_object($value)) ? self::stdClassObjectToArray($value) : $value;
$array[$key] = $value;
}
return $array;
}
}
æ¤å¤å¯è½åå¨ä¸åéå±ç¤ºçå 容ï¼é¡µé¢ä¸äºå±ç¤ºãæ¨å¯éè¿ç¸å ³ç¼è¾åè½èªæ¥å¹¶ä¿®æ¹ã
妿¨ç¡®è®¤å å®¹æ æ¶å ä¸å½ç¨è¯ / 纯广åå¯¼æµ / æ´å / ä½ä¿è²æ / ä¾µæ / çç / èå / æ ä»·å¼å 容æè¿æ³å½å®¶æå ³æ³å¾æ³è§çå 容ï¼å¯ç¹å»æäº¤è¿è¡ç³è¯ï¼æä»¬å°å°½å¿«ä¸ºæ¨å¤çã