2014-09-23 68 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 />"; 
} 
相關問題