PHP为扩大和缩小数组提供了一些函数.对于那些希望模仿各种队列实现(FIFO、LIFO等)的程序员来说,这些函数可以提供便利.顾名思义,从这些函数的函数名(push、pop、shift和unshift)就清楚地反映出其作用.
/*********************************************
* PHPfans系列教程:
*
http://www.phpfans.net/bbs/forumdisplay.php?fid=25
* 作 者: 我不是鱼
* Email:
[email protected]
* 博 客: http://www.phpfans.net/space/?2
*********************************************/
增加元素 $arrayname[ ]
示例:
<?php
$arr = array('phpfans','php','MySQL','javascript');
$arr[] = 'html';//增加一个元素插到最后
$arr['css'] = 'css';//再增加一个元素插到最后
print_r($arr);
?> ;
输出
Array
(
[0] => phpfans
[1] => php
[2] => MySQL
[3] => javascript
[4] => html
[css] => css
) |
删除元素 unset()
用unset()删除一个数组变量,即使是数字索引,此函数也不会重新对数组索引
示例:
<?php
$arr = array(
'phpfans' => 'www.phpfans.net',
'php' => 'www.php.net',
'mysql' => 'www.mysql.com',
'apache' => 'www.apache.org'
);
unset($arr['php']);
print_r($arr);
?> ;
输出:
Array
(
[phpfans] => www.phpfans.net
[mysql] => www.mysql.com
[apache] => www.apache.org
) |
示例:
<?php
$arr = array('phpfans','php','MySQL','javascript');
unset($arr[1]);
print_r($arr);
?> ;
输出:
Array
(
[0] => phpfans
[2] => MySQL
[3] => javascript
) |
索引保持不变
array_push()
array_push()函数将variable增加到target_array的末尾,成功时返回TRUE,否则返回FALSE.
这个和栈的入栈相似.可以为此函数传递多个变量作为输入参数,同时向数组压入多个变量(元素).
示例:
<?php
$arr = array('phpfans','php','MySQL','javascript');
array_push($arr,'html','css');
print_r($arr);
?> ;
输出:
Array
(
[0] => phpfans
[1] => php
[2] => MySQL
[3] => javascript
[4] => html
[5] => css
) |
注: 如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担.
注: 如果第一个参数不是数组,array_push() 将发出一条警告.这和 $var[] 的行为不同,后者会新建一个数组.
array_unshift ( array &$array, mixed $var [, mixed $...] )
array_unshift() 将传入的单元插入到 array 数组的开头.注意单元是作为整体被插入的,因此传入单元将保持同样的顺序.所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变.函数的返回值是 array 数组新的单元数目.
示例:
<?php
//PHPfans站系列教程:
//http://www.phpfans.net/bbs/forumdisplay.php?fid=25
$arr = array(
0 => 'www.php.net',
1 => 'www.mysql.com',
2 => 'www.apache.org'
);
$phpfans = 'www.phpfans.net';
$num = array_unshift($arr,$phpfans);
echo "新的数组的长度是:".$num;
echo "\r\n\r\n";
print_r($arr);
?> ;
输出:
新的数组的长度是:4
Array
(
[0] => www.phpfans.net
[1] => www.php.net
[2] => www.mysql.com
[3] => www.apache.org
) |
array_pop()
array_pop()函数返回target_array的最后一个元素(出栈),并在结束后重置数组的指针.
<?php
$arr = array(
'phpfans' => 'www.phpfans.net',
'php' => 'www.php.net',
'mysql' => 'www.mysql.com',
'apache' => 'www.apache.org'
);
echo array_pop($arr);
echo "\n\n";
print_r($arr);
?> ;
输出:
www.apache.org
Array
(
[phpfans] => www.phpfans.net
[php] => www.php.net
[mysql] => www.mysql.com
) |
array_shift ( array &$array )
array_shift() 将 array 的第一个单元移出并作为结果返回(出列),将 array 的长度减一并将所有其它单元向前移动一位.所有的数字键名将改为从零开始计数,文字键名将不变.如果 array 为空(或者不是数组),则返回 NULL.使用本函数后会重置数组指针.
示例: 数字键值
<?php
//PHPfans站系列教程:
//http://www.phpfans.net/bbs/forumdisplay.php?fid=25
$arr = array('phpfans','php','MySQL','javascript','html','css');
echo array_shift($arr);
echo "\n\n";
print_r($arr);
?> ;
输出:
phpfans
Array
(
[0] => php
[1] => MySQL
[2] => javascript
[3] => html
[4] => css
) |
示例: 键值为字符串
<?php
$arr = array(
'phpfans' => 'www.phpfans.net',
'php' => 'www.php.net',
'mysql' => 'www.mysql.com',
'apache' => 'www.apache.org'
);
echo array_shift($arr);
echo "\r\n\r\n";
print_r($arr);
?> ;
输出:
www.phpfans.net
Array
(
[php] => www.php.net
[mysql] => www.mysql.com
[apache] => www.apache.org
) |
array array_pad ( array $input, int $pad_size, mixed $pad_value )
array_pad()函数会修改target数组,将其大小增加到length指定的长度.这是通过在数组中填充由pad_value指定的值实现的.如果pad_value是正数,将填充到数组的右侧(后面);如果为负,则将填充到左侧(前面).如果length等于或小于当前大小,将不做任何操作.示例如下:
这是手册中的例子
<?php
$input = array(12, 10, 9);
$result = array_pad($input, 5, 0);
// result is array(12, 10, 9, 0, 0)
$result = array_pad($input, -7, -1);
// result is array(-1, -1, -1, -1, 12, 10, 9)
$result = array_pad($input, 2, "noop");
// not padded
?> ;