2011-09-20 36 views
2

我有一個數組,看起來像這樣提取值隔開字符串

Array 
(
    [1] => Array 
     (
      [name] => Zeze 
      [city] => Denver, 
      [state] => Colorado, 
      [country] => United States 
      [user_id] => 1 
      [cars] => Array 
       (
        [140] => Array 
         (
          [cars_name] => BMW 
         ) 

        [162] => Array 
         (
          [cars_name] => Mazda 
         ) 
       ) 
     ) 

    [8] => Array 
     (
      [name] => Lex 
      [city] => Schwelm, 
      [state] => North Rhine-Westphalia, 
      [country] => Germany 
      [user_id] => 5 
      [cars] => Array 
       (
        [140] => Array 
         (
          [cars_name] => Mercedes 
         ) 

        [162] => Array 
         (
          [cars_name] => Audi 
         ) 
       ) 
     ) 
) 

我需要從user_id提取值並把它放在一個逗號分隔字符串。

對於上述陣列,我想獲得:

1,5

我有點困惑如何循環這個數組foreach,然後我將如何建立一個字符串?或者,還有更好的方法?

回答

8
$uids = Array(); 
foreach($users as $u) $uids[] = $u['user_id']; 
$list = implode(",",$uids); 

這是假設你的數組被命名爲$users$list是輸出。

+0

該答案爲您提供了函數定義和回調操作。另外它可能更易於閱讀。 – hakre

0

使用foreach循環遍歷多維數組中的每個項目,並將該項目視爲普通數組。然後將user_id值推入另一個數組,並用逗號分開逗號分隔。

$user_ids = array(); 

foreach($arr in $multidim_arr) { 
    array_push($user_ids, $arr["user_id"]); 
} 

$user_ids = implode(",", $user_ids); 
+0

'array_push'建議有利於'[]'推一個單值時反對,'implode'有分隔符的第一個參數(他們可以以任何順序由於歷史的原因,但seperator-首先是首選) –

2

您可以使用array_mapimplode組合:

function get_uid($el) { 
    return $el["user_id"]; 
} 

$csv = implode(array_map("get_uid", $your_array), ','); 
echo $csv;  
+1

只是輸入這個答案,並得到了橙色欄「一個新的答案已發佈」。 – Jonah

+0

thx - 你知道這個解決方案比@ kolink的下面更強大嗎? – pepe

+0

該解決方案爲陣列中的每個項目調用一次get_uid。在這一點上,它與亞歷克阿納尼安的解決方案一樣。 –

0

這將是最簡單的方法:

回聲破滅( 「」 array_column($ myarray的 「USER_ID」)) ;

-1
$stateId = Array (
    [0] => Array 
     (
      [id] => 9 
      [state_id] => 81 
      [rto_id] => 82 
      [is_active] => 1 
     ) 
    [1] => Array 
     (
      [id] => 10 
      [state_id] => 82 
      [rto_id] => 83 
      [is_active] => 1 
     ) 

); 

$stateIds = implode(",", array_column($stateId, "state_id")); 

echo $stateIds;