我已经通过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上做这件事让我疯了。任何帮助将不胜感激。
答案 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++;