数组实际上是一个有序映射映射。是一种把值关联到键的类型。
值(value)对。
$array = array(
key1 => value1,
key2 => value2,
key3 => value3,
...
);
// 键(key)可是是一个整数 integer 或字符串 string
// 值(value)可以是任意类型的值
// 自 5.4 起可以使用短数组定义语法,用 [] 替代 array()。
$array = [
1 => 10,
2 => 20,
3 => 30,
];
print_r($array); // Array ( [1] => 10 [2] => 20 [3] => 30 )
$array2 = [10,20,30];
print_r($array2); // Array ( [0] => 10 [1] => 20 [2] => 30 )
?>
根据键名的类型进行分类,主要分为2类:
键名为都是整数的数组,称为索引数组;
键名为都是字符串的数组,称为关联数组;
如果键名不是以上两种类型,将会自动强制转换
$arr = [1=>24,1.3=>'nihao',true=>'168',0.3=>'转化'];
print_r($arr); // Array ( [1] => 168 [0] => 转化 )
// 数组会强制转化1.3为1,这样就出现2个键值为1的元素,后面的元素会覆盖前面的元素。
$arr2 = [1=>24,1.3=>'nihao',false=>'168',0.3=>'转化'];
print_r($arr2); // Array ( [1] => nihao [0] => 转化 )
// 如果索引为false的话,这个索引对应的值不会出现在数组中
$arr3 = [2=>20,'name'=>'Tom'];
print_r($arr3); // Array ( [2] => 20 [name] => Tom )
// 数组的键值可以是整型和字符串混合的
// 注意:通常从数据库中获取的数组我们需要将他们转化为关联数组进行操作
1.数组的值的类型:
数组的值可以是任何类型;
如果是对象,要按照对象的方式访问;
如果是数组,就构成了多维数组;
class TeacherClass{}
$teacher = new TeacherClass();
$teacher->name = 'Jerry';
$arr = [
'name'=>'Tom', // string
'jobage'=>10, // int
'language'=>['html','css','javascript','vuejs'],
'teacher'=>$teacher
];
print_r($arr);
print_r($arr[teacher]->name); // Jerry
/*
Array
(
[name] => Tom
[jobage] => 10
[language] => Array
(
[0] => html
[1] => css
[2] => javascript
[3] => vuejs
)
[teacher] => TeacherClass Object
(
[name] => Jerry
)
)
*/
2.数组元素的添加和更新:
html
[1] => css
[2] => mysql
[3] => vuejs
[4] => php
[6] => java
)
*/
?>
3.数组元素的删除:
html [1] => css [3] => vuejs )
// 清空数组,并不是删除数组,数组任然存在
foreach($arr as $key => $value){
unset($arr[$key]);
}
print_r($arr); // Array ( )
unset($arr); // 删除整个数组,整个数组连同变量名arr一起删除
print_r($arr); // Notice: Undefined variable: arr
?>
4.数组元素的重建索引:
10,1=>11,2=>12,3=>13];
print_r($arr); // Array ( [0] => 10 [1] => 11 [2] => 12 [3] => 13 )
unset($arr[2]);
echo '
';
print_r($arr); // Array ( [0] => 10 [1] => 11 [3] => 13 )
// 可以看到,如果我们清空数组之后再添加元素,元素的索引缺少了2,这时我们需要重建立索引
// 重建索引针对的是索引数组
$newArr = array_values($arr);
print_r($newArr); // Array ( [0] => 10 [1] => 11 [2] => 13 )
?>
5.数组元素的遍历:
10,1=>11,2=>13];
foreach($arr as $key => $value){
echo $key.'=>'.$value.'
';
}
/*
0=>10
1=>11
2=>13
*/
?>
语句/函数 | 标量类型(字面量/变量/常量)输出 | 复合类型(数组/对象) |
---|---|---|
echo语句 | 值(字符串形式) | 数组:Array 对象:无法查看(toString除外) |
print_r()函数 | 值(字符串形式) | 格式化输出,加参数true,输出到字符串 |
var_dump()函数 | 类型(字符串形式)、值(字符串形式) | 类型、长度、值 |