3.24 php基础(21)_foreach循环遍历数组

Posted on 2021-03-24 15:59  ***Pepsi***  阅读(232)  评论(0编辑  收藏  举报

数组遍历:普通数组数据的访问都是通过数组元素的下标来实现访问,如果说数组中所有的数据都需要依次输出出来,就需要我们使用到一些简化的规则来实现自动获取下标以及输出数组元素。

访问单个数据:
二维数组:
$arr = array
    (
        0 => array('name'=>'Tom'),
        1 => array('name'=>'Jim')
    );       
访问一维数组:$arr[一维下标]
$arr[0]  
访问二维数组:$arr[一维下标][二维下标]
$arr[0]['name']

如果访问全部数据呢?这里就要用到foreach循环遍历
foreach循环遍历语法
基本语法:
foreach($数组变量 as[$下标 =>]$值)
    {
         //通过$下标访问元素的下标,通过$值访问元素的值
    }
说明:[]代表可有可无,as:比如、例如。如果是关联数组(字母下标),就需要下标,如果是数字下标可以直接访问值。

一维数组遍历:

<?php
$arr = array(1,2,3,4,5,6,7,8,9,10);
foreach($arr as $v) //$v随意命名
{
echo $v."\n";
}
?>
<?php
$arr = array(1,2,3,4,5,6,7,8,9,10);
foreach($arr as $k => $v) //$v随意命名
{
echo 'key:'.$k.'value'.$v."\n";
}
?>
二维数组遍历:
在进行数据存储定义的时候,通常二维数组不会两个维度的key下标都为数字,一般是一维为数字(无意义),二维为字符串(数据库表字段),所以在进行遍历的时候,通常是只需要针对一维进行遍历,取得二维数组的元素,然后二维数组元素通过下标去访问

<?php
$arr = array
(
0 => array('name' => 'Tom','age' => 30),
1 => array('name' => 'Jim','age' => 28),
2 => array('name' => 'Lily','age' => 20)
);
foreach($arr as $value)
{
var_dump($value);
}
foreach($arr as $k => $v)
{
//1、可以继续遍历:增加foreach遍历$value
foreach($arr[$k] as $index => $value)
{
echo $index.' is '.$value."\n";
}
//2、可以使用下标访问
// echo 'name is:'.$v['name'].' and age is:'.$v['age']."\n";
}
?>
---------- 编译php ----------
array(2) {
["name"]=>
string(3) "Tom"
["age"]=>
int(30)
}
array(2) {
["name"]=>
string(3) "Jim"
["age"]=>
int(28)
}
array(2) {
["name"]=>
string(4) "Lily"
["age"]=>
int(20)
}
name is Tom
age is 30
name is Jim
age is 28
name is Lily
age is 20
foreach遍历原理 
foreach($arr as $k ==> $v)
    {
        循环体;
    }
foreach遍历原理:本质是数组的内部有一个指针,默认是指向数组元素的第一个元素,foreach就是利用指针去获取数据,同时移动指针。
    1、foreach会重置指针:让指针指向第一个元素(通常是执行完其他数组后)
    2、进入foreach循环:通过指针取得当前第一个元素,然后将下标取出放到对应的下标变量$k中(如果存在的话),将值取出来放到对应的值变量$v中,指针下移。
    3、进入到循环内部(循环体);
    4、重复2和3,直到2的时候遇到指针取不到内容(指针指向数组最后)

Copyright © 2024 ***Pepsi***
Powered by .NET 8.0 on Kubernetes