wangyongdong
9/16/2019 - 7:03 AM

数组方法

<?php
/**
 * php 数组函数与方法
 */
header("Content-Type:text/html;charset=utf-8");

/**
  * 二维数组根据某个字段排序
  * 功能:按照用户的年龄倒序排序
  */
$sArr = array(
     array(
 		'user_id' => 7409903,
 		'all_list' => 1,
 		'right_list' => 1,
     ),
     array(
 		'user_id' => 1100411,
 		'all_list' => 4,
 		'right_list' => 4,
     ),
     array(
 		'user_id' => 749903,
 		'all_list' => 1,
 		'right_list' => 0,
     ),
);
$sort = array(
 	'direction' => 'SORT_DESC', //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
 	'field'     => 'right_list',       //排序字段
);
$arrSort = array();
foreach($sArr AS $uniqid => $row){
     foreach($row AS $key=>$value){
         $arrSort[$key][$uniqid] = $value;
     }
}
if($sort['direction']){
     array_multisort($arrSort[$sort['field']], constant($sort['direction']), $sArr);
}
var_dump($sArr);
echo '<hr/>';

/**
 * 根据二维数组某个key获取所有值
 * @param $array 查找的数据
 * @param $index 键名
 * @param $value 值
 * @return array
 */
function get_by_index($array, $index) {
    $newarray = array();
    foreach ($array as $key=>$value) {
        if(!empty($value[$index])) {
            $newarray[] = $value[$index];
        }
    }
    return $newarray;
}

/**
 * 根据二维数组某个字段的值查找数组
 * @param $array 查找的数据
 * @param $index 键名
 * @param $value 值
 * @return array
 */
function filter_by_value($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) {
                $newarray = $array[$key];
            }
        }
    }
    return $newarray;
}

/**
 * 有一数组 $a=array(3,2,4,9,8);请将其重新排序,按从小到大的顺序列出。
 * 可用冒泡法进行排序
 */
$a = array(3,2,4,9,8);
print_r(arraySort($a));
function arraySort(array $array) {
    $length = count($array);
    for($i = 0; $i < $length; $i++) {
        for($j = 0; $j < $length - 1; $j++) {
            if($array[$j] > $array[$j+1]) {
                $tmp = $array[$j];
                $array[$j] = $array[$j+1];
                $array[$j+1] = $tmp;
            }
        }
    }
    return $array;
}