2017-04-10 46 views
-1

我有一羣用戶,每個用戶都有一個描述,我想將這些描述添加到數組中。然後我想讀取數組,分割每個描述,並將結果設置爲變量。舉例說明是:如何添加到數組然後輸出項目?

italian, mexicanfrench, american

這是我目前在做什麼:

<?php 
    $stack = array(); 
    $blogusers = get_users('orderby=nicename&role=author'); 
    foreach ($blogusers as $user) { 
     array_push($stack, $user->user_description); 
    } 
    $out = array_map('trim', explode(',', $stack)); 
?> 

然後我做

<ul> 
    <li><?php echo $out[0]; ?></li> 
    <li><?php echo $out[1]; ?></li> 
    <li><?php echo $out[2]; ?></li> 
    <li><?php echo $out[3]; ?></li> 
</ul> 

但我得到沒有結果值的列表

UPDATE

試圖

$stack = array(); 
$blogusers = get_users('orderby=nicename&role=author'); 
foreach ($blogusers as $user) { 
    $users = array_map('trim', explode(',', $user->user_description)); 
    array_push($stack, $users); 
} 

然後

<li><?php echo $stack[0]; ?></li> 
<li><?php echo $stack[1]; ?></li> 
<li><?php echo $stack[2]; ?></li> 
+1

爲什麼要爆炸$ stack?我認爲你需要爆炸user_description。 – jh1711

+0

,因爲我想修剪和爆炸描述中的每個單詞,因爲它們是意大利,美國,... –

+0

@ jh1711嘗試\t $ stack = array(); \t $ blogusers = get_users('orderby = nicename&role = author'); \t foreach($ blogusers as $ user){ \t \t $ users = array_map('trim',explode(',',$ user-> user_description)); \t \t array_push($ users,$ stack); \t}然後echo $ stack [0]; –

回答

3

只需展開每個描述,然後將爆炸返回的每個元素推送到數組上。這假設你不關心重複。

$stack = array(); 
$blogusers = get_users('orderby=nicename&role=author'); 
foreach ($blogusers as $user) { 
    $descTokens = explode(',', $user->user_description); 
    $stack = array_merge($stack, $descTokens); 
} 

<li><?php echo $stack[0]; ?></li> 
<li><?php echo $stack[1]; ?></li> 
<li><?php echo $stack[2]; ?></li> 
+0

優秀,美觀和簡單。非常感謝 –

+2

您可以使用'array_merge()'而不是循環。 – miken32

+0

nope這實際上是好的,我在數組中重複值,因爲我正在做所有這些以創建統計信息。其實有沒有一種方法可以得到相同值的總數?像「2」意大利人? –

2

如果你看一看$stack後,你的循環是鰭ished,你就會有一些相同的:

<?php 
$stack = [ 
    "italian, mexican", 
    "french, american", 
    "canadian, irish", 
]; 

如果你運行這個通過爆炸,你不會因爲你傳遞一個數組得到任何東西。事實上,如果你有正確的錯誤報告設置,你會得到有關傳遞數組而不是字符串的警告。我想你想要做的是這樣的:

<?php 
    $blogusers = get_users('orderby=nicename&role=author'); 
    foreach ($blogusers as $user) { 
     $out[] = $user->user_description; 
    } 
?> 
<li><?=$out[0]?></li> 
<li><?=$out[1]?></li> 
<li><?=$out[2]?></li> 
... 

如果你確實需要這個單獨的變量,可以explode()它,但你不能輸出數組到頁面:

<?php 
    $blogusers = get_users('orderby=nicename&role=author'); 
    foreach ($blogusers as $user) { 
     $out[] = explode(",", $user->user_description); 
    } 
?> 
<li><?=$out[0][0]?></li> 
<li><?=$out[0][1]?></li> 
<li><?=$out[1][0]?></li> 
<li><?=$out[1][1]?></li> 
... 
+0

這很好,但然後我不會有每個描述作爲一個單獨的輸出,如在quetsion每個描述中所述是「意大利人,美國人」等等。我需要拆分這些單詞中的每一個,並能夠將它們列爲已經更新的單獨列表 –

+0

! – miken32

+0

非常感謝很多,這個作品,但接受了其他答案,因爲它更接近我在做什麼,更簡單地處理它 –