2010-07-13 28 views
3

我試圖將它的鍵和值的數組分解。我可以很容易地得到鑰匙與內爆,但我發現我必須重複自己的鑰匙。Implode值的數組以及它的鍵

目前,我這樣做:

$values = array(
    'id'     => $sel['id'], 
    'creator_id'   => $sel['creator_id'], 
    'campaign_id'   => $sel['campaign_id'], 
    'save_results'   => $sel['save_results'], 
    'send_results_url'  => $sel['send_results_url'], 
    'reply_txt'    => $sel['reply_txt'], 
    'allow_multiple_votes' => $sel['allow_multiple_votes'] 
    ); 
    $cols = ''; 
    $vals = ''; 
    $first = true; 
    foreach($values as $col => $val) { 
     if(!$first) { 
      $cols .= ', '; 
      $vals .= ', '; 
     } 
     $cols .= $col; 
     $vals .= $val; 
     $first = false; 
    } 

困擾我的部分是這樣的:

foreach($values as $col => $val) { 
    if(!$first) { 
    $cols .= ', '; 
    $vals .= ', '; 
    } 
    $cols .= $col; 
    $vals .= $val; 
    $first = false; 
} 

有沒有一種辦法破滅數組鍵?

例如,我可以做

$vals = implode(', ', $values); 

內爆的價值,但我需要的按鍵也這麼做。

我還可以使用

$keys = array(); 
    foreach($values as $col => $val) 
     $keys[] = $col; 
    $cols = implode(', ', $keys); 
    $rows = implode(', ', $values); 

,但它仍然需要我遍歷它創建另一個陣列,一定有更好的辦法,做到這拿到鑰匙?

回答

27
$cols = implode(', ',array_keys($values)); 
+0

真棒,謝謝 :) – Hailwood 2010-07-13 03:07:00

1

該功能將從多維數組

<?php 
function multiarray_keys($ar) { 

    foreach($ar as $k => $v) { 
     $keys[] = $k; 
     if (is_array($ar[$k])) 
      $keys = array_merge($keys, multiarray_keys($ar[$k])); 
    } 
    return $keys; 
} 
?> 
-1

print_r($values,true);

然後除去從結果的前兩行和最後一行中提取的鍵:

Array 
(
    [foo] => bar 
    [baz] => boom 
)