php foreach 循环外获取循环内的循环数据_PHP和JS中的foreach

本文详细介绍了JavaScript和PHP中的foreach用法。在JavaScript中,foreach用于数组的循环遍历,示例展示了如何使用它输出数组元素。而在PHP中,foreach作为遍历数组的简便方法,有两种语法形式,分别演示了如何遍历并输出数组元素,以及如何获取键名。此外,还讲解了PHP中的数组指针操作,包括key、current、next和prev等函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c5dfd19037510d4b151c221e86a307da.png

俗话说的好:从哪里跌倒就从哪里爬起来。想当初,在JavaScript中学了foreach之后,我对它的了解仅局限于“循环遍历”这四个字。在php中再次见到它,我竟然觉得恍若隔世。所以这篇文章我想来写写PHP和JS中的foreach。

一、JavaScript中的foreach

JavaScript 提供了很多个内置对象:Math/Array/Number/String/Boolean等,这些内置对象是带有属性和方法的特殊数据类型。

其中,Array(数组)对象有一个方法forEach,它可以为数组中的每个元素调用定义的回调函数,即对数组中的每个元素执行一次提供的函数。

在JS中,提到数组的循环遍历,最先想到的应该是for循环,即for(var i=0;i<arr.length;i++)这样的方式,也可以用更简便的forEach。示例如下:

<!DOCTYPE html>
<html>

<head>
    <title></title>
</head>

<body>
    <script>
        var arr = ['好', '好', '学', '习'];
        arr.forEach(function(e) {
            document.write(e);
        })
    </script>
</body>

</html>

此时,浏览器界面上展示循环遍历的结果:

743398d02a522821ff382f16d522223c.png
图1.JavaScript中的foreach

在以上的示例中,arr中的元素依次被放入函数中执行输出,实现了数组的循环遍历。

二、PHP中的foreach

1、PHP中的foreach

php 4 引入了 foreach 结构,这只是一种遍历数组简便方法。foreach 仅能用于数组,有以下两种语法:

用法一:

foreach ($arr as $value) statement

第一种格式遍历给定的 arr 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

用法二:

foreach ($arr as $key => $value) statement

第二种格式与第一种作用相同,只除了当前单元的键名也会在每次循环中被赋给变量 $key。

示例如下:

用法一:

<?php
      $arr = array('one', 'two', 'three');
      reset($arr);
      foreach ($arr as $value) {
          echo "Value: $value<br/>";
    }

代码运行结果:

367eb38b33b6fcc9444e7f2f99f4a69e.png
图2.用法一

用法二:

<?php
    $arr = array('one', 'two', 'three');
    reset($arr);
    foreach ($arr as $key => $value) {
        echo "Key: $key; Value: $value<br/>";
    }

代码运行结果:

f4a66a3f5c564a58881780e51e300b2d.png
图3.用法二

代码执行过程:

1.对所要遍历的数组指针进行重置。

2.获取指针当前所指向的元素的键名与键,并将键名与键值赋值给 $key,与 $value 变量。同时将指针下移一行。

3.重复的进行读取,下移指针的动作。

4.当没有元素可以读取时,会自动结束。

自 php 5 起,还可能遍历对象。在 php 5 中,当 foreach 开始执行时,数组内部的指针会自动指向第一个单元,即在以上两段代码中,不需要执行 reset($arr) 来重置指针的指向。

自 php 5 起,可以很容易地通过在 $value 之前加上 & 来修改数组的单元。此方法将以引用赋值而不是拷贝一个值。

示例如下:

<?php
    $arr = array(1, 2, 3, 4);
    foreach ($arr as &$value) {
        $value = $value * 2;
        echo "$value";
}

代码运行结果:

4fd0e943b81560149c7dcf048ec7019a.png
图4. &amp;amp;符引用赋值

2、数组中的指针操作

在PHP的foreach循环遍历中,提到了指针。

php中提供了一套函数,这套函数专用于通过数组的指针来操作数组。

数组在内存中有一个数组指针与之相关,默认这个指针位于第1个元素上。这个指针可以通过php的指针函数来操作。

如下:

key → 获取指针当前所指向元素的键名。

current → 获取指针当前所指向元素的键值。

next → 将指针下移一个元素

prev → 将指针上移一个元素

reset → 将指针重置(回到第1个元素)

示例如下:

<?php
    $arr = array('one', 'two', 'three');
    echo key($arr),'  ',current($arr),'<br/>';
    next($arr);
    echo key($arr),'  ',current($arr),'<br/>';
    next($arr);
    echo key($arr),'  ',current($arr),'<br/>';
    next($arr);
    var_dump(key($arr));

代码运行结果:

bf42c35bf1cf0ac940cea9b203783d84.png
图5.指针操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值