【问题标题】:Understanding a foreach loop in PHP了解 PHP 中的 foreach 循环
【发布时间】:2014-02-27 15:31:30
【问题描述】:

我有两个 foreach 循环,我正在使用 WordPress 生成的对象。

在我看来,这些都应该是一样的。然而,他们没有。注意循环中的$post$not_a_post

答:

$array_A = array( 'posts_per_page' => 2 );
$get_posts_A = get_posts( $array_A );

foreach ( $get_posts_A as $post ) { //uses $post
    the_title(); 
}

乙:

$array_B = array( 'posts_per_page' => 5 );
$get_posts_B = get_posts( $array_B );

foreach ( $get_posts_B as $not_a_post ) {  //uses $not_a_post
    the_title(); 
 }

唯一的区别是我使用变量$post 进行条件第一个循环。

我一直认为(显然是错误的)第二个条件变量只是一个占位符。所以我可以做 $x、$y 等。

有人可以向我解释为什么这个 foreach 循环需要变量 $post 吗?

【问题讨论】:

  • 你能解释一下预期的结果是什么以及你得到了什么......?这似乎也与 PHP 无关,而是与 Wordpress 的特质有关。
  • 请按照@deceze 的说法发布更多信息,但与此同时。在纯 PHP 术语中,两者之间的区别(就您所要求的而言)是第一个 foreach 循环内部有变量 $post,第二个有 $not_a_post。谁知道get_posts 做什么或the_title() 需要什么,因为您没有向我们展示该代码。

标签: php wordpress loops


【解决方案1】:

那是因为the_title() 依赖于来自外部作用域的精确命名为$post 的变量,顺便说一下,这是一个糟糕的设计理念——它应该作为参数传递给函数,例如:

the_title($some_id || $some_resource);

编辑:实际上 WP 允许您传递帖子 ID,check the code here

【讨论】:

  • 谢谢,所以在 WordPress 之外不会出现这种情况。您能否详细说明该函数的参数?
  • 感谢您提到 wordpress 的全局变量混乱...不能说得更好
  • 这样更清楚。对此我有什么可以改变当前循环的地方,还是我无法避免的怪癖?
  • @tmyie 你可以打电话给get_the_title($not_a_post)。或者你可以使用一个巧妙编码的软件:))
  • @Thomas 该声明可以缩写为 不要使用 Wordpress。 ;)
猜你喜欢
  • 2016-09-26
  • 2012-07-19
  • 2018-05-31
  • 1970-01-01
  • 2017-05-28
  • 2015-12-10
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
相关资源
最近更新 更多