<legend id='ODHiB'><style id='ODHiB'><dir id='ODHiB'><q id='ODHiB'></q></dir></style></legend>

      <small id='ODHiB'></small><noframes id='ODHiB'>

      1. <tfoot id='ODHiB'></tfoot>
        <i id='ODHiB'><tr id='ODHiB'><dt id='ODHiB'><q id='ODHiB'><span id='ODHiB'><b id='ODHiB'><form id='ODHiB'><ins id='ODHiB'></ins><ul id='ODHiB'></ul><sub id='ODHiB'></sub></form><legend id='ODHiB'></legend><bdo id='ODHiB'><pre id='ODHiB'><center id='ODHiB'></center></pre></bdo></b><th id='ODHiB'></th></span></q></dt></tr></i><div id='ODHiB'><tfoot id='ODHiB'></tfoot><dl id='ODHiB'><fieldset id='ODHiB'></fieldset></dl></div>
          <bdo id='ODHiB'></bdo><ul id='ODHiB'></ul>
      2. 可迭代对象和数组类型提示?

        时间:2023-11-30
        <legend id='276zQ'><style id='276zQ'><dir id='276zQ'><q id='276zQ'></q></dir></style></legend>
          <bdo id='276zQ'></bdo><ul id='276zQ'></ul>
        • <i id='276zQ'><tr id='276zQ'><dt id='276zQ'><q id='276zQ'><span id='276zQ'><b id='276zQ'><form id='276zQ'><ins id='276zQ'></ins><ul id='276zQ'></ul><sub id='276zQ'></sub></form><legend id='276zQ'></legend><bdo id='276zQ'><pre id='276zQ'><center id='276zQ'></center></pre></bdo></b><th id='276zQ'></th></span></q></dt></tr></i><div id='276zQ'><tfoot id='276zQ'></tfoot><dl id='276zQ'><fieldset id='276zQ'></fieldset></dl></div>
            <tbody id='276zQ'></tbody>

                <tfoot id='276zQ'></tfoot>

                  <small id='276zQ'></small><noframes id='276zQ'>

                  本文介绍了可迭代对象和数组类型提示?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有很多函数,它们要么具有数组类型提示,要么使用 is_array() 来检查变量的数组特性.

                  I have a lot of functions that either have type hinting for arrays or use is_array() to check the array-ness of a variable.

                  现在我开始使用可迭代的对象.它们实现 IteratorIteratorAggregate.如果它们通过类型提示或经过 is_array(),它们会被作为数组接受吗?

                  Now I'm starting to use objects that are iterable. They implement Iterator or IteratorAggregate. Will these be accepted as arrays if they pass through type hinting, or undergo is_array()?

                  如果我必须修改我的代码,是否有一种通用的 is_iterable(),或者我必须这样做:

                  If I have to modify my code, is there a generic sort of is_iterable(), or must I do something like:

                  if ( is_array($var) OR $var instance_of Iterable OR $var instanceof IteratorAggregate ) { ... }
                  

                  还有哪些其他可迭代的接口?

                  What other iterable interfaces are out there?

                  推荐答案

                  我想你的意思是 instanceof Iterator,PHP 没有 Iterable 接口.它确实有一个 Traversable 接口.IteratorIteratorAggregate 都扩展了 Traversable (并且 AFAIK 他们是唯一这样做的).

                  I think you mean instanceof Iterator, PHP doesn't have an Iterable interface. It does have a Traversable interface though. Iterator and IteratorAggregate both extend Traversable (and AFAIK they are the only ones to do so).

                  但是不,实现 Traversable 的对象不会通过 is_array() 检查,也没有内置的 is_iterable()功能.您可以使用的支票是

                  But no, objects implementing Traversable won't pass the is_array() check, nor there is a built-in is_iterable() function. A check you could use is

                  function is_iterable($var) {
                      return (is_array($var) || $var instanceof Traversable);
                  }
                  

                  需要明确的是,所有 php 对象都可以用foreach 进行迭代,但只有一些 实现了Traversable.因此,提供的 is_iterable 函数不会检测到 foreach 可以处理的所有内容.

                  To be clear, all php objects can be iterated with foreach, but only some of them implement Traversable. The presented is_iterable function will therefore not detect all things that foreach can handle.

                  这篇关于可迭代对象和数组类型提示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何在 PHP 中使用 RegexIterator 下一篇:是否可以回退 PDO 结果?

                  相关文章

                1. <legend id='6g9bV'><style id='6g9bV'><dir id='6g9bV'><q id='6g9bV'></q></dir></style></legend><tfoot id='6g9bV'></tfoot>

                  1. <small id='6g9bV'></small><noframes id='6g9bV'>

                      • <bdo id='6g9bV'></bdo><ul id='6g9bV'></ul>

                      <i id='6g9bV'><tr id='6g9bV'><dt id='6g9bV'><q id='6g9bV'><span id='6g9bV'><b id='6g9bV'><form id='6g9bV'><ins id='6g9bV'></ins><ul id='6g9bV'></ul><sub id='6g9bV'></sub></form><legend id='6g9bV'></legend><bdo id='6g9bV'><pre id='6g9bV'><center id='6g9bV'></center></pre></bdo></b><th id='6g9bV'></th></span></q></dt></tr></i><div id='6g9bV'><tfoot id='6g9bV'></tfoot><dl id='6g9bV'><fieldset id='6g9bV'></fieldset></dl></div>