2010-07-13 27 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 
)