返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >怎么在php中使用foreach遍历类对象
  • 726
分享到

怎么在php中使用foreach遍历类对象

2023-06-14 18:06:47 726人浏览 八月长安
摘要

怎么在PHP中使用foreach遍历类对象?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主

怎么在PHP中使用foreach遍历类对象?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

php有什么特点

1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向对象编程:PHP提供了类和对象。5、版本更新速度快。6、具有丰富的功能。7、可伸缩性。8、功能全面,包括图形处理、编码与解码、压缩文件处理、xml解析等。

class my{public $a = 'a';protected $b = 'b';private $c = 'c';private $data = array('fantasy','windows','linux');// 内部foreach遍历classfunction traversable(){foreach($this as $key=>$val){echo $key.'=>';print_r($val);echo '<br>';}}}$m = new my();// 外部foreach遍历classforeach($m as $key=>$val){echo $key.'=>';print_r($val);echo '<br>';}echo '--------------------------<br>';// 内部foreach遍历class$m->traversable();

输出结果如下:

a=>a

--------------------------

a=>a

b=>b

c=>c

由此可知,对于外部的foreach遍历是没有权限访问 protected private 这两个修饰的属性的,而在class内部是有权限访问,foreach可以遍历所有的属性。

今天在写PDO的时候发现可以这样写: 

foreach($db->query('SELECT * FROM tab') as $row){    print_r($row);}


这样快速的获取了全部查询结果,可奇怪的是$this->query() 返回的是 object类型 PDOStatement ,var_dump()打印出来的结果是这样的:

object(PDOStatement)#2 (1) {  ["queryString"]=>  string(18) "SELECT * FROM user"}


PDOStatement里面就一个public属性 queryString  并且foreach也没有出现这个值,这样的情况就不是简单的对属性进行遍历了,而是class继承了iterator迭代器,在foreach的时候会执行class里面的迭代方式,遍历迭代器指定的数据

关于迭代器看下面的例子:

class test implements Iterator{public $a = 'a';private $data = array('apple','banlance','current');private $point = 0;public function __construct(){$this->point = 0;}public function current(){return $this->data[$this->point];}public function key(){return $this->point;}public function next(){++$this->point;}public function rewind(){$this->point=0;}public function valid(){return isset($this->data[$this->point]);}}$t = new test();foreach($t as $val){print_r($val);echo '<br>';}

输出结果如下:

apple

banlance

test class 实现iterator的接口,foreach调用的时候会使用这个接口方法,调用过程大致如下面伪代码:

// 迭代过程伪代码while(valid){<span ></span>current/key<span ></span>next}rewind

so,之前的foreach对class的处理过程是一种默认方法,如果是继承iterator的class被foreach遍历的时候是上面这种方式

由此情况去套用 PDO的写法还是行不通,因为如果我们var_dump上面的哪个test类结果是这样的:

test Object(    [a] => a    [data:test:private] => Array        (            [0] => apple            [1] => banlance            [2] => current        )     [point:test:private] => 0)

但是当我们var_dump $db->query返回的对象时并没有见到point这个iterator接口中定义的属性以及遍历的数据 $data;

由此我们可以猜测PDOStatement继承了一种迭代的接口但是并不是iterator

查看手册可以发现:

PDOStatement implements Traversable

查看Traversable的介绍如下图:

怎么在php中使用foreach遍历类对象

关于怎么在php中使用foreach遍历类对象问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网PHP编程频道了解更多相关知识。

--结束END--

本文标题: 怎么在php中使用foreach遍历类对象

本文链接: https://lsjlt.com/news/274068.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在php中使用foreach遍历类对象
    怎么在php中使用foreach遍历类对象?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主...
    99+
    2023-06-14
  • php中foreach遍历类对象的总结
    foreach 遍历数组很常见,同样foreach也可以遍历对象 做如下测试: class my { public $a = 'a'; protected $b = 'b';...
    99+
    2024-04-02
  • 怎么在php中遍历对象
    这篇文章将为大家详细讲解有关怎么在php中遍历对象,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、Wamp...
    99+
    2023-06-14
  • php中foreach遍历怎么用
    这篇文章主要为大家展示了“php中foreach遍历怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php中foreach遍历怎么用”这篇文章吧。forea...
    99+
    2024-04-02
  • 怎么在php中使用foreach循环遍历数组
    本篇文章为大家展示了怎么在php中使用foreach循环遍历数组,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、W...
    99+
    2023-06-14
  • PHP怎么用foreach()遍历数组
    这篇文章将为大家详细讲解有关PHP怎么用foreach()遍历数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。foreach()foreach()是一个用来遍历数组中数据的最简单有效的方法。<ph...
    99+
    2023-06-17
  • foreach-php中有什么遍历
    这篇文章给大家分享的是有关foreach-php中有什么遍历的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。    1.foreach的格式foreach (array_express...
    99+
    2023-06-13
  • 如何在php中使用foreach遍历二维数组
    今天就跟大家聊聊有关如何在php中使用foreach遍历二维数组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的...
    99+
    2023-06-14
  • 怎么在jquery中使用$.each()遍历对象和数组
    怎么在jquery中使用$.each()遍历对象和数组?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。jquery是什么jquery是一个简洁而快速的JavaScript库,...
    99+
    2023-06-14
  • 怎么在JavaScript中遍历对象属性
    本篇文章为大家展示了怎么在JavaScript中遍历对象属性,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称为Java...
    99+
    2023-06-14
  • PHP如何使用foreach()遍历数组
    小编给大家分享一下PHP如何使用foreach()遍历数组,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法一:foreach(数组名称 as 自定义变量){}f...
    99+
    2023-06-14
  • php如何使用foreach遍历数组
    这篇文章主要介绍了php如何使用foreach遍历数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。foreach遍历数组的方法:1、使用“foreach (数组表达式 as...
    99+
    2023-06-15
  • 如何在Vue中使用foreach遍历数组
    今天就跟大家聊聊有关如何在Vue中使用foreach遍历数组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在js中遍历数组//定义班次详细数组  var ...
    99+
    2023-06-15
  • PHP中怎么检测一个类是否可以被foreach遍历
    这篇文章将为大家详细讲解有关PHP中怎么检测一个类是否可以被foreach遍历,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在PHP中检测一个类是否可以被foreach遍历在PHP中,我们可以非常简单的判...
    99+
    2023-06-15
  • Vue中如何使用foreach遍历数组
    本篇内容介绍了“Vue中如何使用foreach遍历数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在js中遍历数组//定义班次详细数组&n...
    99+
    2023-07-04
  • php中如何用foreach遍历二维数组
    在PHP中,可以使用foreach循环来遍历二维数组。以下是一个示例:```php$twoDimensionalArray = ar...
    99+
    2023-10-11
    php
  • 怎么在TypeScript中正确的遍历一个对象
    这篇文章主要介绍了怎么在TypeScript中正确的遍历一个对象的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么在TypeScript中正确的遍历一个对象文章都会有所收获,下面我们一起来看看吧。JavaScr...
    99+
    2023-06-29
  • PHP循环中如何使用foreach()方法遍历数组
    这篇文章主要介绍了PHP循环中如何使用foreach()方法遍历数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。foreach():for...
    99+
    2024-04-02
  • jquery中怎么遍历对象和数组
    jquery中怎么遍历对象和数组,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JS forEach方法arr[].forEach(functi...
    99+
    2024-04-02
  • PHP中如何实现对象进行遍历
    小编给大家分享一下PHP中如何实现对象进行遍历,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先我们来了解下一种什么是对象遍历:它主要就是指遍历对象中的,对外部可...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作