?php
成都創(chuàng)新互聯(lián)公司專(zhuān)注于網(wǎng)站建設(shè)|成都企業(yè)網(wǎng)站維護(hù)|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋成都加固等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷(xiāo)售的產(chǎn)品,結(jié)合品牌形象的塑造,量身開(kāi)發(fā)品質(zhì)網(wǎng)站。
unset($ary[$key]);
$ary?=?array_values($ary);
在某個(gè)數(shù)組中刪除一個(gè)元素,我是直接用的unset,也不管unset之后會(huì)發(fā)生什么。但今天看到的東西卻讓我大吃一驚,并不是我想象的那樣,我用示例來(lái)說(shuō)明
我們來(lái)舉一個(gè)例子:
代碼如下:
?php
$arr
=
array('a','b','c','d');
unset($arr[1]);
print_r($arr);
?
我之前想象的是unset之后,數(shù)組$arr應(yīng)該會(huì)壓縮數(shù)組以填補(bǔ)缺少的元素位置,但print_r($arr)之后,結(jié)果卻不是那樣的,最終結(jié)果是
Array
(
[0]
=
a
[2]
=
c
[3]
=
d
);
如果是這樣的話,那我們就來(lái)看看數(shù)字?jǐn)?shù)組的形式
代碼如下:
?php
$arr
=
range(5,10,4);
print_r($arr);//span
style="font-family:
Simsun;font-size:16px;
"Array
(
[0]
=
5
[1]
=
6
[2]
=
7
[3]
=
8
[4]
=
9
[5]
=
10
)/span
unset($arr[1]);//span
style="font-family:
Simsun;font-size:16px;
"Array
(
[0]
=
5
[2]
=
7
[3]
=
8
[4]
=
9
[5]
=
10
)/span
print_r($arr);
?
可以看到輸出的形式也是數(shù)組是會(huì)填補(bǔ)缺少的元素的位置。那么怎么才能做到缺少的元素會(huì)被填補(bǔ)并且數(shù)組會(huì)被重新索引呢?答案是array_splice():pre
name="code"
class="php"?php
代碼如下:
$arr
=
array('a','b','c','d');
array_splice($arr,1,1);
print_r($arr);
//
span
style="font-family:
Simsun;font-size:16px;
"Array
(
[0]
=
a
[1]
=
c
[2]
=
d
)/span
?
不知道 同學(xué)知不知道 array_slice 這個(gè)函數(shù)?
$arr = array_slice($arr, 0, 3);
就可以了。
array_slice() 第一個(gè)參數(shù)是要切割的數(shù)組,第二個(gè)參數(shù)是起始位置,第三個(gè)參數(shù)是長(zhǎng)度。
就是 切割 $arr這個(gè)數(shù)組,從第0個(gè)元素往后數(shù)3個(gè)。
array_slice 用法很靈活,可以支持負(fù)數(shù)參數(shù),具體可以自己查看php手冊(cè)。
break;
case
"a2":
//根據(jù)$id來(lái)刪除$strArray數(shù)組中對(duì)應(yīng)鍵值的元素值,完成后就重新生成數(shù)組.
//大家?guī)臀彝瓿蛇@部分.
//下面是我補(bǔ)充的
unset($strArray[$id]);
//補(bǔ)充結(jié)束
break;
case
"a3":
//用戶(hù)把信息提交到這里,根據(jù)提交的$id與數(shù)組$strArray的鍵值對(duì)比,如果相同就把數(shù)組對(duì)應(yīng)的元素值改變,注:其它的元素值和鍵位值都不變.完成后就重新生成數(shù)組.
//大家把這部分幫我完成一下
//下面是我補(bǔ)充的
if
(isset($strArray[$id]))
$strArray[$id]=$value;
//補(bǔ)充結(jié)束
break;
array_splice函數(shù)可以刪除數(shù)組中的元素(只是該函數(shù)的功能之一),array_splice用法如下:
array_splice
—
把數(shù)組中的一部分去掉并用其它值取代
array array_splice( array $input, int $offset[, int $length = 0 [, mixed $replacement ]] )把
input
數(shù)組中由offset
和
length指定的單元去掉,如果提供了
replacement
參數(shù),則用其中的單元取代。
input:輸入的數(shù)組。
offset:如果
offset
為正,則從
input數(shù)組中該值指定的偏移量開(kāi)始移除。如果
offset為負(fù),則從
input
末尾倒數(shù)該值指定的偏移量開(kāi)始移除。
length:如果省略
length,則移除數(shù)組中從offset到結(jié)尾的所有部分。
如果指定了
length并且為正值,則移除這么多單元。
如果指定了
length并且為負(fù)值,則移除從
offset
到數(shù)組末尾倒數(shù)length
為止中間所有的單元。
小竅門(mén):當(dāng)給出了replacement
時(shí)要移除從
offset到數(shù)組末尾所有單元時(shí),用count($input)
作為
length。
replacement:如果給出了
replacement
數(shù)組,則被移除的單元被此數(shù)組中的單元替代。
示例,刪除數(shù)組$inputArr的第5~10個(gè)元素(從0開(kāi)始數(shù),包括第5個(gè)和第10個(gè),共6個(gè)元素)
array_splice($inputArr,5,6);
/**
*
從數(shù)組中刪除空白的元素(包括只有空白字符的元素)
*
*
@param
array
$arr
*
@param
boolean
$trim
*/
復(fù)制代碼
代碼如下:
function
array_remove_empty(
$arr,
$trim
=
true)
{
foreach
($arr
as
$key
=
$value)
{
if
(is_array($value))
{
array_remove_empty($arr[$key]);
}
else
{
$value
=
trim($value);
if
($value
==
'')
{
unset($arr[$key]);
}
elseif
($trim)
{
$arr[$key]
=
$value;
}
}
}
}
/**
*
將一個(gè)二維數(shù)組轉(zhuǎn)換為
hashmap
*
*
如果省略
$valueField
參數(shù),則轉(zhuǎn)換結(jié)果每一項(xiàng)為包含該項(xiàng)所有數(shù)據(jù)的數(shù)組。
*
*
@param
array
$arr
*
@param
string
$keyField
*
@param
string
$valueField
*
*
@return
array
*/
復(fù)制代碼
代碼如下:
function
array_to_hashmap(
$arr,
$keyField,
$valueField
=
null)
{
$ret
=
array();
if($valueField)
{
foreach
($arr
as
$row)
{
$ret[$row[$keyField]]
=
$row[$valueField];
}
}
else
{
foreach($arr
as
$row)
{
$ret[$row[$keyField]]
=
$row;
}
}
return
$ret;
}