一、數組的定義與分類:數組元素是由鍵名與值組成
數組定義與分類結構圖
數組是鍵值對的集合 |
1.鍵 |
1.整數 |
2.字符串 |
2.值 |
1.標量 |
1.整數型 |
2.浮點型 |
3.字符串型 |
4.布爾型 |
2.複合 |
1.數組(多維數組) |
2.對象 |
數組按鍵名類型分爲 |
1.索引數組 |
鍵名默認是從零順序遞增的整數 |
可自定義鍵名,如果重複,後面覆蓋前面的 |
2.關聯數組 |
鍵名是字符串,用引號包裝 |
如果重複,後面覆蓋前面 |
<?php
// 數組是鍵值對的有序集合
// 數組的鍵名,必須是整數或者字符串,如果不是,將會自動轉化爲這兩種類型
// 創建一個索引數組
// 1.默認索引數組:鍵名是從0開始遞增的
// $arr = ['html','css','javascript','php'];
// $arr = ['html',5=>'css','javascript','php'];
// Array
// (
// [0] => html
// [5] => css
// [6] => javascript
// [7] => php
// )
// $arr = ['html',3.8=>'css','javascript','php'];
// Array
// (
// [0] => html
// [3] => css
// [4] => javascript
// [5] => php
// )
// $arr = ['html',true=>'css','javascript','php'];
// Array
// (
// [0] => html
// [1] => css // true被轉化爲1
// [2] => javascript
// [3] => php
// )
$arr = ['html',false=>'css','javascript','php'];
// Array
// (
// [0] => css // false被轉化爲0,鍵名相同,後面的值覆蓋前面的值
// [1] => javascript
// [2] => php
// )
echo '<pre>';
print_r($arr);
echo '</pre>';
echo '<hr>';
// 2.關聯數組:鍵名是自定義的字符串
$arr1 = ['name'=>'peter','age'=>28,'sex'=>'male'];
echo '<pre>';
print_r($arr1);
echo '</pre>';
// Array
// (
// [name] => peter
// [age] => 28
// [sex] => male
// )
?>
二、數組的創建與訪問:3種創建方法與2種訪問方式
數組的創建與訪問 2-1
1.創建 |
1.初始化創建 |
2.直接給元素賦值創建 |
3.先聲明空數組,再添加 |
2.訪問 |
1.整體訪問:print_r($array),var_dump($array) |
2.逐個訪問:echo $array[$key],var_dump($array[$key],可同時訪問多個) |
3.數組指針 |
current():獲取指針當前位置的元素的值 |
key():獲取指針當前元素的鍵名(索引) |
next():指針移動到下一個元素 |
prev():指針移動到上一個元素 |
end():指針移動到最後一個元素 |
reset():指針復位到第一個元素 |
<?php
// 1.創建
// 初始化創建一個索引數組
$arr1 = ['html','css','javascript'];
echo '<pre>';
print_r($arr1);
echo '</pre>';
// Array
// (
// [0] => html
// [1] => css
// [2] => javascript
// )
// 初始化創建一個關聯數組
$arr2 = ['a'=>'html','b'=>'css','c'=>'javascript'];
echo '<pre>';
print_r($arr2);
echo '</pre>';
// Array
// (
// [a] => html
// [b] => css
// [c] => javascript
// )
// 賦值的同時,創建數組
$arr3['a'] = 'html';
$arr3['s'] = 'css';
echo '<pre>';
print_r($arr3);
echo '</pre>';
// Array
// (
// [a] => html
// [s] => css
// )
// 創建空數組,再賦值
$arr4 = [];
$arr4[1] = 10;
$arr4[4] = 40;
$arr4[6] = 60;
echo '<pre>';
print_r($arr4);
echo '</pre>';
// Array
// (
// [1] => 10
// [4] => 40
// [6] => 60
// )
// 2.訪問
// 訪問某個數值,用[]
echo $arr4[4]; // 40
// 3.指針
$arr5 = ['html','css','javascript'];
echo '<pre>';
print_r($arr5);
echo '</pre>';
echo '當前元素是:'.key($arr5).'=>'.current($arr5).'<br>';
next($arr5);// 指針下移一位
echo '當前元素是:'.key($arr5).'=>'.current($arr5).'<br>';
prev($arr5);// 指針上移一位
echo '當前元素是:'.key($arr5).'=>'.current($arr5).'<br>';
end($arr5);// 指針移動到最後一個元素
echo '當前元素是:'.key($arr5).'=>'.current($arr5).'<br>';
reset($arr5);// 指針復位到第一個元素
echo '當前元素是:'.key($arr5).'=>'.current($arr5).'<br>';
?>
三、數組的遍歷
數組的遍歷 3-1
1.for循環 |
索引數組和關聯數組的遍歷 |
2.while循環 |
3.foreach循環 |
4.list與each函數配合 |
list($args...):將數組元素值轉爲變量 |
each($arr):將當前元素以數組的方式返回 |
list和each配合完成遍歷 |
5.遍歷方式的選擇 |
1.默認索引數組用:for |
2.自定義關聯數組用:foreach |
<?php
// 1.for循環
$arr = range(1,10); // 生成一個1-10的索引數組
for($i=0;$i<count($arr);$i++){
echo $i.'=>'.$arr[$i].'<br>';
}
echo '<hr>';
// 關聯數組遍歷
$arr2 = ['name'=>'Tom','age'=>23,'job'=>'engineer'];
for($i=0;$i<count($arr2);$i++){
echo key($arr2).'=>'.current($arr2).'<br>';
next($arr2);
}
// 2.while循環
$arr3 = range(1,10); // 生成一個1-10的索引數組
$i=0;
while($i<count($arr3)){
echo $i.'=>'.$arr[$i].'<br>';
$i++;
}
echo '<hr>';
// 關聯數組遍歷
$arr4 = ['name'=>'Tom','age'=>23,'job'=>'engineer'];
while(current($arr4)){
echo key($arr4).'=>'.current($arr4).'<br>';
next($arr4);
}
// 3.foreach(索引數組與關聯數組遍歷)
$arr5 = range(1,10); // 生成一個1-10的索引數組
foreach($arr5 as $key=>$value){
echo $key.'=>'.$value.'<br>';
}
// 4.list與each函數配合
// list是語言結構,其作用類似於javascript的es6語法的結構賦值
// list的功能是將數組元素轉爲變量
// 1.數組必須是鍵名從0開始遞增的索引數組,不能是關聯數組
// 2.list的參數,不一定要和數組元素一一對應,不對應的變量就自動忽略
$arr6 = range(1,5);
echo '<pre>';
print_r($arr6);
echo '</pre>';
// Array
// (
// [0] => 1
// [1] => 2
// [2] => 3
// [3] => 4
// [4] => 5
// )
list($a,$b,$c,,$e) = $arr6;
// 上面使用空的佔位符(兩個逗號)屏蔽了元素4,即數組的第4個元素
echo $a.' ',$b.' ',$c.' ',$e.' ';
// each()可以遍歷任何數組,將當前數組的當前指針指向的元素以默認索引鍵值和關聯鍵值並存的數組形式返回,並自動下移數組指針
$arr7 = ['合肥','哈爾冰','廣州'];
echo '<pre>';
print_r(each($arr7));
echo '</pre>';
// Array
// (
// [1] => 合肥
// [value] => 合肥
// [0] => 0
// [key] => 0
// )
echo '<pre>';
print_r(each($arr7));
echo '</pre>';
// Array
// (
// [1] => 哈爾冰
// [value] => 哈爾冰
// [0] => 1
// [key] => 1
// )
// 返回結果說明:
// 返回的是四個元素的數組
// 0和1是鍵名對應的是元素索引表示方法,這個特徵是個list處理。key和value對應的是元素的關聯表示方法
// 用list()結構和each()配合完成數組的遍歷操作
$arr8 = ['name'=>'Tom','age'=>28,'job'=>'engineer'];
echo '<pre>';
print_r($arr8);
echo '</pre>';
// Array
// (
// [name] => Tom
// [age] => 28
// [job] => engineer
// )
reset($arr8);
while(list($key,$value)=each($arr8)){
echo $key.'=>'.$value.'<br>';
}
reset($arr8);
while($array = each($arr8)){
echo $array['key'].'=>'.$array['value'].'<br>';
}
?>