6.2.4 PHP刪除數(shù)組中的值應(yīng)用實(shí)例(猴子選大王)
數(shù)組的聲明
數(shù)組的定義
?直接賦值的方式聲明數(shù)組
?使用array( )語言結(jié)構(gòu)新建數(shù)組
?PHP4的新型聲明方式[]
?多維數(shù)組的聲明
?直接賦值的方式聲明數(shù)組
?使用array( )語言結(jié)構(gòu)新建數(shù)組
?PHP4的新型聲明方式[]
?多維數(shù)組的聲明
?數(shù)組常用的賦值方式:
由于 PHP 是屬于弱類型數(shù)據(jù),因此源代碼中的數(shù)組并不需要經(jīng)過特別的聲明操作,直接將一組數(shù)值指定給某一數(shù)組元素即可热幔。一般情況下數(shù)組的賦值有兩種方式:
–直接賦值方式 如:
?$a[0]=‘spam@126.com’;
?$a[1]=‘abuse@sohu.com’;
–使用array函數(shù)如:
?$a=array(“spam@126.com “,”abuse@sohu.com”);
方括號和花括號可以互換使用來訪問數(shù)組單元(例如 $array[42] 和 $array{42} 在上例中效果相同)
直接賦值的方式聲明數(shù)組
?直接賦值格式:
$數(shù)組變量名[索引值]=資料內(nèi)容
其中索引值(下標(biāo))可以是一個(gè)字符串或一個(gè)整數(shù)乐设。等價(jià)于整數(shù)(不以0開頭)的字符串值被當(dāng)作整數(shù)對待。因此绎巨,數(shù)組$array[3]與$array[‘3’]是引用相同的元素近尚。但是$array[‘03’]引用的另外不同的元素。
?一維數(shù)組
數(shù)組中索引值(下標(biāo))只有一個(gè)的數(shù)組稱為一維數(shù)組场勤。在數(shù)組中這是最簡單的戈锻,也是最常用的了。
直接賦值的方式聲明數(shù)組
?直接賦值格式:
$數(shù)組變量名[索引值]=資料內(nèi)容
其中索引值(下標(biāo))可以是一個(gè)字符串或一個(gè)整數(shù)和媳。等價(jià)于整數(shù)(不以0開頭)的字符串值被當(dāng)作整數(shù)對待格遭。因此,數(shù)組$array[3]與$array[‘3’]是引用相同的元素留瞳。但是$array[‘03’]引用的另外不同的元素拒迅。
?一維數(shù)組
數(shù)組中索引值(下標(biāo))只有一個(gè)的數(shù)組稱為一維數(shù)組。在數(shù)組中這是最簡單的她倘,也是最常用的了璧微。
<?php
$contact1[0] = 1;
$contact1[1] = "高某";
$contact1[2] = "A公司";
$contact1[3] = "北京市";
$contact1[4] = "(010)98765432";
$contact1[5] = "gao@brophp.com";
$contact2["ID"] = 2;
$contact2["姓名"] = "峰某";
$contact2["公司"] = "B公司";
$contact2["地址"] = "上海市";
$contact2["電話"] = "(021)12345678";
$contact2["EMAIL"] = "feng@lampbrother.com";
print_r( $contact1 ); //輸出數(shù)組$contact1中所有元素的下標(biāo)和值
var_dump( $contact1 ); //輸出數(shù)組$contact1中所有元素的下標(biāo)和值同時(shí)輸出每個(gè)元素的類型
print_r( $contact2 ); //輸出數(shù)組$contact2中所有元素的下標(biāo)和值
var_dump( $contact2 ); //輸出數(shù)組$contact2中所有元素的下標(biāo)和值同時(shí)輸出每個(gè)元素的類型
<?php
$contact1[0] = 1;
$contact1[1] = "高某";
$contact1[2] = "A公司";
$contact1[3] = "北京市";
$contact1[4] = "(010)98765432";
$contact1[5] = "gao@brophp.com";
$contact2["ID"] = 2;
$contact2["姓名"] = "峰某";
$contact2["公司"] = "B公司";
$contact2["地址"] = "上海市";
$contact2["電話"] = "(021)12345678";
$contact2["EMAIL"] = "feng@lampbrother.com";
print_r( $contact1 ); //輸出數(shù)組$contact1中所有元素的下標(biāo)和值
var_dump( $contact1 ); //輸出數(shù)組$contact1中所有元素的下標(biāo)和值同時(shí)輸出每個(gè)元素的類型
print_r( $contact2 ); //輸出數(shù)組$contact2中所有元素的下標(biāo)和值
var_dump( $contact2 ); //輸出數(shù)組$contact2中所有元素的下標(biāo)和值同時(shí)輸出每個(gè)元素的類型
<?php
$contact[ ] = 1 //索引下標(biāo)為 0
$contact[ ] = "高某"; //索引下標(biāo)為 1
$contact[ ] = "A公司"; //索引下標(biāo)為 2
$contact[ ] = "北京市"; //索引下標(biāo)為 3
$contact[0] = 1 //聲明數(shù)組使用的下標(biāo)為整數(shù)0
$contact["ID"] = 1 //聲明數(shù)組使用的下標(biāo)為字符串
$contact[1] = "高某"; //使用下標(biāo)為整數(shù)1向數(shù)組中添加元素
$contact["姓名"] = "峰某"; //使用下標(biāo)為字符串“姓名”向數(shù)組中添加元素
$contact[2] = "A公司"; //使用下標(biāo)為整數(shù)2向數(shù)組中添加元素
$contact["公司"] = "A公司"; //使用下標(biāo)為字符串“公司”向數(shù)組中添加元素
$contact[ ] = 1; //默認(rèn)的下標(biāo)為 0
$contact[14] = "高某"; //指定非連續(xù)的下標(biāo)為 14
$contact[ ] = "A公司"; //將緊跟最高的下標(biāo)值增1后的下標(biāo)為 15
$contact[ ] = "北京市"; //下標(biāo)再次增1為 16
$contact[14] = "(010)98765432"; //前面已聲明過下標(biāo)為14的元素,重新為下標(biāo)14元素賦值
$contact[ ] = "gao@brophp.com"; //還會(huì)緊跟最高的下標(biāo)值增1后的下標(biāo)為 17
使用array( )語言結(jié)構(gòu)新建數(shù)組
格式:
array( [key =>] value , ... )
// key 可以是 integer 或者 string
// value 可以是任何值
key 可以是 integer 或者 string硬梁。value 可以是任意類型前硫。
應(yīng)該始終在用字符串表示的數(shù)組索引上加上引號。例如用$foo['bar'] 而不是 $foo[bar]荧止。
此外key 會(huì)有如下的強(qiáng)制轉(zhuǎn)換:
l 包含有合法整型值的字符串會(huì)被轉(zhuǎn)換為整型屹电。例如鍵名"8" 實(shí)際會(huì)被儲(chǔ)存為8。但是"08" 則不會(huì)強(qiáng)制轉(zhuǎn)換跃巡,因?yàn)槠洳皇且粋€(gè)合法的十進(jìn)制數(shù)值危号。
l 浮點(diǎn)數(shù)也會(huì)被轉(zhuǎn)換為整型,意味著其小數(shù)部分會(huì)被舍去瓷炮。例如鍵名8.7 實(shí)際會(huì)被儲(chǔ)存為8葱色。
l 布爾值也會(huì)被轉(zhuǎn)換成整型。即鍵名true 實(shí)際會(huì)被儲(chǔ)存為1 而鍵名false 會(huì)被儲(chǔ)存為0娘香。
l Null 會(huì)被轉(zhuǎn)換為空字符串苍狰,即鍵名null 實(shí)際會(huì)被儲(chǔ)存為""。
l 數(shù)組和對象不能被用為鍵名烘绽。堅(jiān)持這么做會(huì)導(dǎo)致警告:Illegal offset type淋昭。
l
l如果在數(shù)組定義中多個(gè)單元都使用了同一個(gè)鍵名,則只使用了最后一個(gè)安接,之前的都被覆蓋了翔忽。
l
l如果對給出的值沒有指定鍵名,則取當(dāng)前最大的整數(shù)索引值,而新的鍵名將是該值加一歇式。如果指定的鍵名已經(jīng)有了值驶悟,則該值會(huì)被覆蓋。
實(shí)例
** **<?php
$a=**array**(1,2,3,4,5,6);
$b=**array**("one", "two", "three");
$c=**array**(0=>"aaa",1=>"bbb",2=>"ccc");
$d=**array**("aaa",6=>"bbb","ccc");
$e=**array**("name"=>"zhang", "age"=>20);
?>
自 5.4 起可以使用短數(shù)組定義語法材失,用 [] 替代array()痕鳍。
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
);
// 自PHP 5.4 起
$array = [
"foo" => "bar",
"bar" => "foo",
];
?>
自PHP 5.4 起可以用數(shù)組間接引用函數(shù)或方法調(diào)用的結(jié)果。之前只能通過一個(gè)臨時(shí)變量龙巨。
<?php
function getArray() {
return array(1, 2, 3);
}
// on PHP 5.4
$secondElement = getArray()[1];
// previously
$tmp = getArray();
$secondElement = $tmp[1];
unset() 函數(shù)允許刪除數(shù)組中的某個(gè)鍵笼呆。但要注意數(shù)組將不會(huì)重建索引。如果需要?jiǎng)h除后重建索引旨别,可以用 array_values() 函數(shù)诗赌。
2.php
<?php
/*
* 直接賦值聲明數(shù)組
*
*
* 1. 一個(gè)數(shù)組中存的是多個(gè)內(nèi)容, 數(shù)組中的內(nèi)容叫作 “元素”
*
* 2. 每個(gè)元素都是由 鍵和值 組成的 key/ value key下標(biāo)
*
* $a = array("one"=>"11111111", "two"=>"222222222");
*
* 3. 就是通過 key 使用 值
*
*
* 下標(biāo)有兩種類型: 一種是整數(shù)(索引數(shù)組)秸弛, 一種是字符串(關(guān)聯(lián)數(shù)組)
*
* 4 . []來操作下標(biāo), 也可以使用{}進(jìn)行互換, 建議使用 []來指定下標(biāo)
*
* 5. 在使用下標(biāo)時(shí)铭若,如果是關(guān)聯(lián)數(shù)組, 一定要使用引號, 不要使用常量名稱
*
* 6. 數(shù)組的自動(dòng)增漲下標(biāo)递览, 默認(rèn)是從0開始的, 自動(dòng)增漲的都是出現(xiàn)過的最大值加1
*
* 7. 關(guān)聯(lián)數(shù)組的字符串下標(biāo)奥喻, 不會(huì)影響索引下標(biāo)的排列規(guī)則!
*
*
* 8. 使用array()函數(shù)聲明數(shù)組, 默認(rèn)是索引的下標(biāo), 是從0開始
*
* 9. 使用 => 符號指定下標(biāo)
*
* php5.4以后非迹, 可以像其他語言一樣聲明數(shù)組了
*
* 10. 刪除數(shù)組中的一個(gè)元素使用unset(), 下標(biāo)不會(huì)重新索引, 需要使用array_values()函數(shù)重新索引
*/
$arr = ["one", "two", "three", "four"];
unset($arr[2]);
$arr = array_values($arr);
print_r($arr);
test.php
<?php
/*
* 直接賦值聲明數(shù)組
*
*
* 1. 一個(gè)數(shù)組中存的是多個(gè)內(nèi)容纯趋, 數(shù)組中的內(nèi)容叫作 “元素”
*
* 2. 每個(gè)元素都是由 鍵和值 組成的 key/ value key下標(biāo)
*
* $a = array("one"=>"11111111", "two"=>"222222222");
*
* 3. 就是通過 key 使用 值
*
*
* 下標(biāo)有兩種類型: 一種是整數(shù)(索引數(shù)組)憎兽, 一種是字符串(關(guān)聯(lián)數(shù)組)
*
* 4 . []來操作下標(biāo), 也可以使用{}進(jìn)行互換, 建議使用 []來指定下標(biāo)
*
* 5. 在使用下標(biāo)時(shí),如果是關(guān)聯(lián)數(shù)組吵冒, 一定要使用引號, 不要使用常量名稱
*
* 6. 數(shù)組的自動(dòng)增漲下標(biāo)纯命, 默認(rèn)是從0開始的, 自動(dòng)增漲的都是出現(xiàn)過的最大值加1
*
* 7. 關(guān)聯(lián)數(shù)組的字符串下標(biāo), 不會(huì)影響索引下標(biāo)的排列規(guī)則!
*
*
* 8. 使用array()函數(shù)聲明數(shù)組, 默認(rèn)是索引的下標(biāo)痹栖, 是從0開始
*
* 9. 使用 => 符號指定下標(biāo)
*
* php5.4以后亿汞, 可以像其他語言一樣聲明數(shù)組了
*
* 10. 刪除數(shù)組中的一個(gè)元素使用unset(), 下標(biāo)不會(huì)重新索引, 需要使用array_values()函數(shù)重新索引
*/
function xdw($m, $n) {
$arr = array();
$a = "a";
for($i=0; $i<$m; $i++) {
$arr[] = $a++;
}
$i=0;
while(count($arr) > 1) {
if($i%$n == 0) {
unset($arr[$i]);
} else {
$arr[] = $arr[$i];
unset($arr[$i]);
}
$i++;
}
return $arr;
}
print_r(xdw(80, 7));