单步执行Foreach循环-将+1添加到循环的末尾,以便下次循环时从第2项开始

时间:2011-09-21 作者:Rob

我正在创建一个定制的谷歌地图,可以绘制多个标记。

View the link as it will make it easier to explain what is happening and what I want

如果单击每个标记,它会显示从子页面抓取的公司名称。目前,它正在每个标记上显示所有公司的名称。如何在每个标记上仅显示一个公司名称?

下面是控制小弹出窗口的代码:

$pages = get_pages(array(\'child_of\' => 1873, \'sort_column\' => \'menu_order\')); 
$counter = 1;
foreach($pages as $post) {
    setup_postdata($post); 
    $fields = get_fields();
    ?> 
    <p><?php $counter++; echo $fields->company_name;?></p>
    <?php
}
wp_reset_query();
一旦循环一次,下次循环时,我需要从下一个孩子开始,不要显示第一个孩子。

2 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

使用offset 参数,仅获取1个结果:

global $my_page_offset;

if(!isset($my_page_offset))
  $my_page_offset = 0;

$pages = get_pages(array(
  \'child_of\'    => $post->ID, 
  \'sort_column\' => \'menu_order\', 
  \'offset\'      => $my_page_offset, 
  \'number\'      => 1,
));

$my_page_offset++;

...
我在这里假设您对这些循环没有太多的控制,因为您要多次执行它们。这就是为什么全局变量。。。

<小时>Last try:

之后var infowindow; 添加以下内容:

<?php

$pages = get_pages(array(\'child_of\' => $post->ID, \'sort_column\' => \'menu_order\'));
$data = array();
foreach($pages as $post){
  setup_postdata($post);
  $fields = get_fields(); 
  $data[] = \'<p>\'.$fields->company_name.\'</p>\';
}
wp_reset_query();

// the js array
echo \'var marker_data = ["\'.implode(\'","\', $data).\'"];\';
?>
现在是信息窗口。设置内容应为:

infowindow.setContent(marker_data[i]);

SO网友:Rob

发现JS中的php需要进行json编码:

echo \'var marker_data = \' . json_encode($data) . \';\';

结束

相关推荐

How to list only root pages?

我想只显示顶级页面,不显示下拉列表。我正在尝试将深度设置为0。。。wp_nav_menu( array( \'theme_location\' => \'primary\', \'depth\' => 0 ) ); 但它会产生:<ul> <li class=\"current_page_item\"> <a href=\"http://www.test.com/\" title=\"Home\">Home&l