2014-09-23 71 views
1

我正在使用查询为wordpress网站的所有用户提取geo_latitude和geo_longitude。我需要输出所有这些作为变量,以便我可以将它插入映射插件。print_r以字符串形式输出,只返回最后一项

我已经设法将下面的代码放在一起,它的效果非常好,print_r,它在屏幕上打印100多个用户的完整列表。但是,当我尝试将其作为变量输出时,它仅返回最终用户的详细信息。

我认为这是与foreach有关,但我看不出如何解决它。

$blogusers = get_users_of_blog(); 
if ($blogusers) { 
$excluded_users = array(1, 10, 11); 
foreach ($blogusers as $bloguser) { 
if (!in_array($bloguser->user_id, $excluded_users)) 
{ 
$user = get_userdata($bloguser->user_id, $excluded_users); 

$user_lat = get_the_author_meta('geo_latitude', $bloguser-> ID); 
$user_long = get_the_author_meta('geo_longitude', $bloguser->ID); 

$gLocations = ($user_lat .',' .$user_long. ' | '); 
} 

$var_users = print_r($gLocations, true); 
print_r($gLocations); 
}} 
+1

你不是添加位置访问数组元素,只是替换它们。如果您想将其分配给不同的变量,您应该创建一个数组来存储每个位置。这就是为什么它保持最后一个记录:这是你做的最后一个替换;) – tfrascaroli 2014-09-23 15:15:12

回答

3

的问题是,要初始化值在循环变量,这样如果循环退出只有最后一个值将stored.You应该使用数组

使用本

$blogusers = get_users_of_blog(); 
$gLocations =array(); 
if ($blogusers) { 
$excluded_users = array(1, 10, 11); 
foreach ($blogusers as $bloguser) { 
if (!in_array($bloguser->user_id, $excluded_users)) 
{ 

$user = get_userdata($bloguser->user_id, $excluded_users); 

$user_lat = get_the_author_meta('geo_latitude', $bloguser-> ID); 
$user_long = get_the_author_meta('geo_longitude', $bloguser->ID); 
array_push($gLocations, $user_lat .',' .$user_long. ' | '); 
} 

$var_users = print_r($gLocations, true); 
print_r($gLocations); 
}} 

编辑

您可以通过两种方法做到这一点

  1. foreach($gLocations as $key=>$value){ 
        echo $value;//'62.7594129,15.425879000000009 |.... so on' will be output 
        }// you can also use for loop 
    
  2. 普通方法 你可以通过索引

     echo $gLocations[0]; // '62.7594129,15.425879000000009 |' will be output but only one value will be shown 
    
+0

好吧,我看到我出错了。现在(并原谅我一个新问题),问题是数组输出为'Array([0] => 62.7594129,15.425879000000009 |',我只需要管道62.7594129,15.425879000000009 |'分离的纯地理数据。 对不起,前端开发人员尝试后端的东西,在这里 – 2014-09-23 15:29:48

+1

@PaulAston它确定我已经添加了一个编辑...检查出来.. – StaticVariable 2014-09-23 18:21:24

+0

忽略上述问题解决,我得到了正确的输出通过使用'implode'剥离掉多余阵列文本 最终代码为: '$ user_lat = get_the_author_meta( 'geo_latitude',$ bloguser-> ID); $ user_long = get_the_author_meta( 'geo_longitude',$ bloguser - > ID); array_push($ gLocations,$ user_lat。','。$ user_long。'|'); } $ user_out = implode(“”,$ gLocations); }} – 2014-09-23 18:40:49

-1

你必须做这样的事情:

foreach($gLocations AS $key=>$value) { 
    echo $key . " -> " . $value; 
} 

如果你只是想看到的值,每条线分别可以做到以下几点:

foreach($gLocations AS $value) { 
    echo $value . "<br />"; 
} 

编辑:我看到添加到变量$ gLocations也是错误的。以下是为您的代码修复:

$blogusers = get_users_of_blog(); 
if ($blogusers) { 
$gLocations = array(); 
$excluded_users = array(1, 10, 11); 
foreach ($blogusers as $bloguser) { 
if (!in_array($bloguser->user_id, $excluded_users)) 
{ 
$user = get_userdata($bloguser->user_id, $excluded_users); 

$user_lat = get_the_author_meta('geo_latitude', $bloguser-> ID); 
$user_long = get_the_author_meta('geo_longitude', $bloguser->ID); 

$gLocations[] = ($user_lat .',' .$user_long. ' | '); 
} 
} 

$var_users = print_r($gLocations, true); 
print_r($gLocations); 
} 
foreach($gLocations AS $value) { 
    echo $value . "<br />"; 
} 
相关问题