在foreach中操纵foreach的最后一次迭代

时间:2012-03-13 20:50:41

标签: wordpress loops foreach

我已经通过foreach循环从三个变量创建了一个数组。

//loop through each post
foreach($loop as $p){
    //get the meta and taxonomy data
     $term_list = get_the_term_list($p, "mountains",true);
     $name = trim($term_list, "1");
     $wtr_long = get_post_meta($p,"wtr_longitude",true);
     $wtr_lat = get_post_meta($p,"wtr_latitude",true);

    //Add to Array
    $map_array[] = array ($name => $wtr_lat . "|" . $wtr_long);

}

现在这个数组应该提供将填充我的Google Map的数据,因为我正在使用下面的代码。

                foreach( $map_array as $a){
                       foreach ($a as $key => $value) { 
                                    $pieces = explode("|", $value);
                                    $trimmed_key = trim($key, "1");
                                    $name = trim($trimmed_key);
                       ?>

                                    {latitude: <?php echo $pieces[0]; ?>,
                                    longitude: <?php echo $pieces[1]; ?>,
                                    html: <?php echo $name; ?>},
                    <?php }} ?>

这几乎没问题(虽然它可能不是最干净的代码,但也会对此提示感兴趣)。我遇到的问题是,在foreach的另一个foreach的最后一次迭代中,我需要添加一个],结果是:

html: <?php echo $name; ?>}],

我可以逃脱一个foreach,但是在foreach内的foreach上做这件事让我疯了。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我不是一个php develeopor,但你可能想要建立你想要首先回应的字符串集合。收集完成后,您可以添加&#39;]&#39;最后一个元素。然后回显您的字符串集合中的每个元素。

答案 1 :(得分:1)

atbyrd,你的方法给了我一些新的问题,但最终导致了一个有效的解决方案。谢谢你。

在解决问题的代码下方,希望将来对其他人有所帮助。

//Add to Array
$map_string .= '{latitude: "' . $wtr_lat . '", longitude: "' . $wtr_long . '", html: "' . $name .'"},~!~';
//$map_string .= '{latitude: "' . $wtr_lat . '", longitude: "' . $wtr_long . '", html: "name"},~!~';
}

//Remove last three "~!~" characters from the string not to have one too many arrays when exploding
$clean_map_string = substr($map_string, 0, -3);

//Now I can explore on ~!~ to get a new array with the correct strings
$map_array = explode('~!~', $clean_map_string);
$i = 0;
$length = count($map_array)-1;

//Inserts all the markers
foreach($map_array as $value){
if( $i != $length ){
echo $value;
}
else {
echo str_replace("},", "}],", $value);
}
$i++;