数组按键名类型分为
- 索引数组
键名默认是从零顺序递增的整数
可自定义键名,如果重复,后面覆盖前面的
索引数组示例
//数组是键值对的有序集合
//数组的键名,必须是整数或者字符串,如果不是,将会自动转化为这两张类型
//创建一个索引数组
//1.默认索引数组:键名是从0开始递增
$arr=['html','css','js','php'];
print_r($arr);
echo "<hr>";
$arr=['html',3=>'css','js','php'];
print_r($arr);
//示例中在3定义了键值从3—5递增
echo "<hr>";
$arr=['html',2.8=>'css','js','php'];
print_r($arr);
//示例中设置了小数,按整数递增
echo "<hr>";
$arr=['html',false=>'css','js','php'];
print_r($arr);
//示例中设置false转化为0,键名相同,后面的值覆盖前面的值
echo "<hr>";
$arr=['html',true=>'css','js','php'];
print_r($arr);
//示例中设置true转化为1,键名相同。
- 示例图
- 关联数组
键名是字符串,用引号包装
如果重复,后面覆盖前面
// 关联数组:键名是自定义的字符串
$arr=['usernmae'=>'ynllw','age'=>18,'sex'=>'male'];
echo '<pre>';
print_r($arr);
echo '</pre>';
- 示例图
数组的创建与访问:
3种创建方法与2种访问方式
创建
- 初始化创建
- 直接给元素赋值创建
- 先声明空数组,再添加
访问
- 整体访问:print_r($array),var_dump($array)
- 逐个访问:echo $array[$key],var_dump($array[$key],可同时访问多个)
数组指针
- current():获取指针当前位置的元素的值
- key():获取指针当前元素的键名(索引)
- next():指针移动到下一个元素
- prev():指针移动到上一个元素
- end():指针移动到最后一个元素
- reset():指针复位到第一个元素
//创建空数组,在赋值
$arr=[];
$arr[0]='html';
$arr[1]='css';
$arr[2]='js';
$arr[3]='php';
print_r($arr);
echo "<hr>";
//数组的访问
echo $arr[2]."<br>";
//数组的指针
echo '当前元素是:'.key($arr).'=>'.current($arr).'<br>';
next($arr); //指针下移一位
echo '当前元素是:'.key($arr).'=>'.current($arr).'<br>';
prev($arr); //指针上移一位
echo '当前元素是:'.key($arr).'=>'.current($arr).'<br>';
end($arr);// 指针移动到最后一个元素
echo '当前元素是:'.key($arr).'=>'.current($arr).'<br>';
reset($arr);// 指针复位到第一个元素
echo '当前元素是:'.key($arr).'=>'.current($arr).'<br>';
- 示例图
数组的遍历
- for循环
- while循环
- foreach循环
- list与each函数配合
- 遍历方式的选择
遍历数组示例
// for循环
$arr = range(1,5); // 生成一个1-10的索引数组
for($i=0;$i<count($arr);$i++)
{
echo $i."=>".$arr[$i].'<br>';
}
unset($arr);
unset($i);
//关联数组遍历
$arr = ['name'=>'ynll','age'=>23,'sex'=>'男'];
for($i=0;$i<count($arr);$i++)
{
echo key($arr)."=>".current($arr).'<br>';
next($arr);
}
echo "<hr>";
//while循环
$arr1= range(1,5);
$i=0;
while($i<count($arr1))
{
echo $i."=>".$arr1[$i].'<br>';
$i++;
}
unset($i);
$arr2 = ['name'=>'ynll','age'=>23,'sex'=>'男'];
$i=0;
while(current($arr2)) //获取指针在数组位置
{
echo key($arr2)."=>".current($arr2).'<br>';
next($arr2);
}
echo "<hr>";
//foreach 循环
$arr3 = range(1,5);
foreach($arr3 as $key =>$value)
{
echo $key.'=>' .$value.'<br>';
}
$arr4 = [];
$arr4[] = ['id'=>'110','name'=>'孙悟空','age'=>58];
$arr4[] = ['id'=>'111','name'=>'唐三藏','age'=>98];
$arr4[] = ['id'=>'112','name'=>'猪八戒','age'=>78];
$arr4[] = ['id'=>'113','name'=>'沙和尚','age'=>68];
foreach($arr4 as $users)
{
foreach($users as $key =>$value)
{
echo $key.'=>'.$value.'<br>';
}
}
echo "<hr>";
//list each 循环
list($a,$b,$c) = [100,300,500];
echo $a, $b, $c;
echo "<br>";
//解析索引数组
$arr5=['id'=>'110','name'=>'孙悟空','age'=>58];
list('id'=>$id,'name'=>$name,'age'=>$age) = ['id'=>'110','name'=>'孙悟空','age'=>58];
echo 'id=>',$id,'<br>name=>',$name, '<br>age=>',$age;
echo "<br>";
foreach($arr4 as list('id'=>$id,'name'=>$name,'age'=>$age))
{
printf('id = %s,姓名= %s,年龄:%s<br>',$id,$name,$age);
}
示例图