PHP 数组处理篇

整理下自己不太熟悉的PHP相关函数的处理内容参考的是php手册:

<?php

//数组处理篇


/**数组排序**/
//1:
/**
bool array_multisort ( array $ar1 [, mixed $arg [, mixed $... [, array $... ]]] ):
	可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序
	关联(string)键名保持不变,但数字键名会被重新索引
**/

$ar1 = array("10", 100, 100, "a");
$ar2 = array(1, 3, "2", 1);
array_multisort($ar1, $ar2);

echo "<pre>";
var_dump($ar1);
var_dump($ar2);

/*每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 - 在此之前为默认值 SORT_ASC 和 SORT_REGULAR*/
$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,$ar[1], SORT_NUMERIC, SORT_DESC);

var_dump($ar);

$ar = array(
       array("10", 11, 100, 100, "a"),
       array(   1,  2, "2",   3,   1)
      );
//$ar[0]:为字符串升序排列 $ar[1]:为数字以降序排列  
array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);

/*把 volume 降序排列,把 edition 升序排列*/
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);


// 取得列的列表
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}

// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);

print_r($data);

//不区分大小写字母排序
//array_map 将回调函数作用到给定数组的单元上
$array = array('Alpha', 'atomic', 'Beta', 'bank');
$array_lowercase = array_map('strtolower', $array);

array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array);

print_r($array);

$grade = array("score" => array(70, 95, 70.0, 60, "70"),
               "name" => array("Zhang San", "Li Si", "Wang Wu",
                               "Zhao Liu", "Liu Qi"));
array_multisort($grade["score"], SORT_NUMERIC, SORT_DESC,
                // 将分数作为数值,由高到低排序
                $grade["name"], SORT_STRING, SORT_ASC);
                // 将名字作为字符串,由小到大排序
var_dump($grade);
//2:bool asort ( array &$array [, int $sort_flags ] )   对数组进行排序并保持索引关系
//3:bool arsort ( array &$array [, int $sort_flags ] )   对数组进行逆向排序并保持索引关系
//4:bool krsort ( array &$array [, int $sort_flags ] )   对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组
//5:bool ksort ( array &$array [, int $sort_flags ] )     对数组按照键名排序,保留键名到数据的关联。本函数主要用于关联数组。 
//6:bool natcasesort ( array &$array )   用“自然排序”算法对数组进行不区分大小写字母的排序 
//7:bool natsort ( array &$array )   用“自然排序”算法对数组排序 
//8:bool rsort ( array &$array [, int $sort_flags ] )  本函数对数组进行逆向排序(最高到最低)。 
//9:bool shuffle ( array &$array )  此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序
//10:bool sort ( array &$array [, int $sort_flags ] )  当本函数结束时数组单元将被从最低到最高重新安排。  此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。
//11:bool uasort ( array &$array , callback $cmp_function )  使用用户自定义的比较函数对数组中的值进行排序并保持索引关联 
//12:uksort usort 使用用户自定义的比较函数对数组中的键/值进行排序并保持索引关联 
 
 
 
 //其他比较重要的数组函数
 
 //array_map — 将回调函数作用到给定数组的单元上 
 //array_pop  — 将数组最后一个单元弹出(出栈) array_push将一个或多个单元压入数组的末尾(入栈)

 

你可能感兴趣的:(PHP 数组处理篇)