1

精简版:

我需要从中创建一个数组:

$locations = array(
    [0] => 'first location',
    [1] => 'second location'
);

对此:

$locations = array( 'first location', 'second location' );

长版

我在 WordPress 中使用了一个名为 MapPress 的插件来动态生成地图。我需要将一组值打印到另一个数组中,以便它可以生成地图。文档表明我可以动态地做到这一点,但这似乎意味着我可以生成地图,只要我知道我需要多少地图点。我想根据这些自定义帖子中的许多内容来生成地图。

我正在从帖子中提取自定义信息以填充字段并将收集的数组存储到另一个数组中。我正在使用这里讨论的方法来提取我需要的每个帖子的信息,并将其存储在一个名为 $locations 的数组中。根据文档,我需要在没有键值的情况下将数组打印到这个数组中(“[0] =>”),但我似乎无法找到如何有效地做到这一点。似乎这是另一个人遇到的问题,但由于她的特定需求而得到解决,而这对我的不起作用。

用于执行所有这些操作的代码如下。

// Let's make a new map.
$mymap = new Mappress_Map(array("width" => 800));

// Run a loop to grab all posts of type "location"
global $post;
$tmp_post = $post;
$args = array( 'post_type' => 'location', 'posts_per_page'=> -1 );
$myposts = get_posts( $args );

$locations = array();
foreach( $myposts as $post ) : setup_postdata($post);

    // Grab all the post's necessary data for creation of the map 
    $title = get_the_title();
    $id = get_the_ID();
    $location_address = get_field("location_address");
    $location_excerpt = get_field("location_excerpt");

    // Plug that data into Mappress' stuff, using dynamic variables
    $mypoi = new Mappress_Poi(array(
        "title" => $title, 
        "body" => $location_excerpt, 
        "address" => $location_address .'<a href="'.$id.'">More Information >></a>'
    ));

    // This converts the address to a longitude/latitude location for the plugin's use
    $mypoi->geocode(); 

    // this is where I get hung up. I need to print the array without the key values
    $locations[] = $mypoi;
endforeach;

$post = $tmp_post; 
// print_r($locations); when I print_r them like they are, they have key values

$mymap->pois = array($locations); //this generates all the maps POIs to create the map
echo $mymap->display(array("directions"=>"none")); // this just displays the map

长篇大论,我知道。但这是一个特定问题,使用所有可用信息可能更容易解决。

谢谢!

编辑:

$locations 正在打印我想要的内容,但@mario 让我意识到它应该按原样接受数组。正如我设置的那样,它是这样的:

$locations = array();
$mymap->pois = array($locations);

这意味着它打印出来:

$mymap->pois = array( array('location info 1', 'location info 2')); 

我需要做的就是这个;

$mymap->pois = $locations; 

它工作得很好。我觉得好傻 我需要这个才能最终得到我的答案。谢谢大家的建议!

4

1 回答 1

0

这将根据需要打印任何数组(在本例中$locations)。$o包含您应该打印的输出。

$a = $locations;
$o = '$locations = array(';
foreach ($a as &$v)
    $v = "'$v'";
$o .= implode(', ', $a);
$o .= ');';
于 2012-10-18T23:27:33.320 回答