6.5 增加和删除数组元素

6.5 增加和删除数组元素

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[ ]
示例:

[复制到剪切板]
CODE:
<?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()删除一个数组变量,即使是数字索引,此函数也不会重新对数组索引
示例:

[复制到剪切板]
CODE:
<?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
)
示例:

[复制到剪切板]
CODE:
<?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.
这个和栈的入栈相似.可以为此函数传递多个变量作为输入参数,同时向数组压入多个变量(元素).
示例:

[复制到剪切板]
CODE:
<?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 数组新的单元数目.

示例:

[复制到剪切板]
CODE:
<?php
//PHPfans站系列教程:
//http://www.phpfans.net/bbs/forumdisplay.php?fid=25
$arr = array(
   
=> 'www.php.net',
   
=> 'www.mysql.com',
   
=> '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的最后一个元素(出栈),并在结束后重置数组的指针.

[复制到剪切板]
CODE:
<?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.使用本函数后会重置数组指针.

示例: 数字键值

[复制到剪切板]
CODE:
<?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
)
示例: 键值为字符串

[复制到剪切板]
CODE:
<?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等于或小于当前大小,将不做任何操作.示例如下:

这是手册中的例子

[复制到剪切板]
CODE:
<?php
$input 
= array(12109);

$result array_pad($input50);
// 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($input2"noop");
// not padded
?> ;

如履薄冰

没人顶,我来顶起.

不错 要好好看下~

顶一个,看得出版主很努力。