您的位置:首页 > 编程语言 > PHP开发

PHP基础之数组3

2017-09-18 10:52 225 查看
1.bool sort(array &$array[,int $sort_flags = SORT_REGULAR])

使用sort对数组进行排序,当排序结束的时候,数组单元从低到高重新排列,成功返回true。

其中sort_flags为可选参数,具体值如下:

->SORT_REGULAR 正常比较单元

->SORT_NUMERIC 单元被作为数字进行比较

->SORT_STRING 单元被作为字符串比较

->SORT_LOCAL_STRING 根据当前区域设置来把单元当作字符串比较,可是使用setlocale进行改变

->SORT_NATURAL 对每个单元以自然的顺序进行比较

->SORT_FLAG_CASE

让我们通过实例看下具体的使用:

 

$country = array("china","americ","russia");
sort($country,SORT_REGULAR);
echo "<pre>";
print_r($country);
echo "<br/>";
--->
Array
(
[0] => americ
[1] => china
[2] => russia
)


$country2 = array("china","americ","russia");
sort($country2,SORT_NUMERIC);
echo "<pre>";
print_r($country2);
echo "<br/>";

-->

Array
(
[0] => china
[1] => americ
[2] => russia
)

$country3 = array("china","americ","russia");
sort($country3,SORT_NATURAL);
echo "<pre>";
print_r($country3);
echo "<br/>";

-->
Array
(
[0] => americ
[1] => china
[2] => russia
)

$country4 = array("china","americ","russia");
sort($country4,SORT_STRING);
echo "<pre>";
print_r($country4);
echo "<br/>";

$country5 = array("china","americ","russia");
sort($country5,SORT_FLAG_CASE);
echo "<pre>";
print_r($country5);
echo "<br/>";

-->

Array
(
[0] => americ
[1] => china
[2] => russia
)


2.bool asort(array &$array[,int &sort_flags = SORT_REGULAR])

该函数于sort函数使用方法相同,唯一的区别是排序完成后不改变原来的数组元素的索引。

$country = array("c"=>"china","a"=>"americ","a"=>"russia");
asort($country);
echo "<pre>";
print_r($country);
echo "<br/>";
-->

Array
(
[a] => americ
[c] => china
[r] => russia
)

3.bool arsort(array &$array[,int &sort_flags = SORT_REGULAR])

该函数对数组进行逆向排序并保持索引关系。排序结果与asort刚好相反.

$country = array("c"=>"china","a"=>"americ","r"=>"russia");
arsort($country);
echo "<pre>";
print_r($country);
echo "<br/>";
-->

Array
(
[r] => russia
[c] => china
[a] => americ
)

4.bool rsort(array &$array[,int &sort_flags = SORT_REGULAR])

该函数与sort函数的排序结果刚好相反,对数组的逆向排序但不保持索引关系.
$country = array("c"=>"china","a"=>"americ","r"=>"russia");
rsort($country);
echo "<pre>";
print_r($country);
echo "<br/>";
-->
Array
(
[0] => russia
[1] => china
[2] => americ
)

5.bool shuffle(array $array)

该行函数是将数组数序打乱,每次执行都是随机的,所以每次得到的结果会有所不同。

$numbers = range(1,25);
shuffle($numbers);
foreach ($numbers as $number)
{
echo "$number ";
}
-->
24 20 1
4000
0 17 25 16 9 13 12 8 23 6 2 21 19 7 1 18 14 22 15 11 5 4 3

6.array array_chunk(array $input,int $size[,bool $preserve_keys = false])

该函数主要用来将输入数组input分割成多个数组,返回一个多维数组。其中每个单元数组的个数是由size来决定的。当然可能会出现最后一个数组的数组个数小于size的情况。

其中可选参数$preserve_keys是用来指示是否保留输入数组原来的键名。默认为false,即不保留,重新从0开始指定索引。

$input_array = array('a'=>array('x','y'),'b','c','d');
print_r(array_chunk($input_array, 3));
echo "<br/>";
echo "--->保留键名:";
print_r(array_chunk($input_array, 3,true));

--------------------
Array
(
[0] => Array
(
[0] => Array
(
[0] => x
[1] => y
)

[1] => b
[2] => c
)

[1] => Array
(
[0] => d
)

)

--->保留键名:Array
(
[0] => Array
(
[a] => Array
(
[0] => x
[1] => y
)

[0] => b
[1] => c
)

[1] => Array
(
[2] => d
)

)


7.array array_merge(array $array1[,$array...])

将一个或者多个数组合并,一个数组中的值附加在前面的数组后面作为返回结果的数组。

如果输入的数组中有相同的字符串键名,那么該键名后面的值将覆盖前面的。另外,如果数组包含数字键名,那么后面的值不会对前面的值进行覆盖,而是附加到后面。

注意:如果只给了一个数组并且该数组是数字索引,那么键名会以连续方式重新进行索引排列。

echo "<pre>";
$merge_array1 = array('a'=>array('x','y'),'b','c','d');
$merge_array2 = array('2','4');
print_r(array_merge($merge_array1, $merge_array2));
echo "<br/>";

-->
Array
(
[a] => Array
(
[0] => x
[1] => y
)

[0] => b
[1] => c
[2] => d
[3] => 2
[4] => 4
)


另外如果只是想将新的数组附加到一个数组后面,可以使用“+”运算符,需要留意的是如果数组中键名相同的时候只会保留嗲一个数组的键值。
$array1 = array(0=>"o-a",2=>"2-a",3=>"3-a");
$array2 = array(1=>"1-b",2=>"2-b",4=>"4-b");

var_dump($array1+$array2);
-->
array (size=5)
0 => string 'o-a' (length=3)
2 => string '2-a' (length=3)
3 => string '3-a' (length=3)
1 => string '1-b' (length=3)
4 => string '4-b' (length=3)

8.int array_unshift(arary &$array,mixed $var[,mixed$...])
将元素插入到数组的开头,如果键名是文字键名,则保留。所有的数值键名都会重新按照顺序修改。

$array_queue = array('a'=>"first",1=>"latest");
array_unshift($array_queue, "mid","large");
print_r($array_queue);
echo "<br/>";
-->

Array
(
[0] => mid
[1] => large
[a] => first
[2] => latest
)

9.mixed array_shift(arary &$array)
将数组$array的第一个元素从数组中移除,后面的元素依次向前移动一位,数字键名重新排列。

$array_queue2 = array("foo",'a'=>"first","latest","rdsd");
$result = array_shift($array_queue2);
print_r($array_queue2);
--》
Array
(
[a] => first
[0] => latest
[1] => rdsd
)

10.int array_push(aray &$array ,mixed $var[,mixed$...])
将一个或者多个元素加入到数组的末尾。其中数组的长度会根据加入的元素数目增加,处理成功后返回数组的元素个数。

$array_push_test = array("org",'b'=>"edg");
echo array_push($array_push_test, "snake","IG");
print_r($array_push_test);
echo "<br/>";
--》
4
Array
(
[0] => org
[b] => edg
[1] => snake
[2] => IG
)

11.mixed array_push(aray &$array )
删除数组的最后一个元素并返回该元素,并且数组元素的长度减少1.如果array为空,返回NULL。

$array_pop_test = array("org",'b'=>"edg");
echo array_pop($array_pop_test);
echo "<br/>";
print_r($array_pop_test);
echo "<br/>";
-->
edg
Array
(
[0] => org
)


12.bool is_array(mixed  $var)

检测变量是否为数组,是数组返回true,反之返回false。

$a = [1,2];
$b = 23;
var_dump(is_array($a));
var_dump(is_array($b));
echo "<br/>";
--》
D:\Programs\PHP\PHP_Array\PHP_Array2.php:115:boolean true
D:\Programs\PHP\PHP_Array\PHP_Array2.php:116:boolean false

13.number array_sum(array $array)
讲数组中的所有值的和以整数或者浮点数作为结果返回。普通字符串被当作0.

$a = ['a',2,3,45,66];
echo "array_sum:"+array_sum($a);
echo "<br/>";
--》
116

最后我们在来看下$_SERVER数组到底有什么东西:

echo "<pre>";
print_r($_SERVER);
echo "<br/>";
--》
Array
(
[DOCUMENT_ROOT] => D:\Programs\PHP\PHP_Array
[REMOTE_ADDR] => ::1
[REMOTE_PORT] => 61931
[SERVER_SOFTWARE] => PHP 7.1.7 Development Server
[SERVER_PROTOCOL] => HTTP/1.1
[SERVER_NAME] => localhost
[SERVER_PORT] => 8000
[REQUEST_URI] => /
[REQUEST_METHOD] => GET
[SCRIPT_NAME] => /
[SCRIPT_FILENAME] => PHP_Array2.php
[PHP_SELF] => /
[HTTP_ACCEPT] => text/html, application/xhtml+xml, image/jxr, */*
[HTTP_ACCEPT_LANGUAGE] => zh-CN
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_HOST] => localhost:8000
[HTTP_CONNECTION] => Keep-Alive
[REQUEST_TIME_FLOAT] => 1505708091.7241
[REQUEST_TIME] => 1505708091
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: