10

キーと値の両方の配列を内破しようとしています。内破で簡単に鍵を手に入れることができますが、鍵を得るために自分自身を繰り返さなければならないことがわかりました。

現在、私はこれをやっています:

$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);

しかし、それをループして別の配列を作成する必要があります。確かにもっと良い方法があります。キーを取得するだけですか?

4

3 に答える 3

54
$cols = implode(', ',array_keys($values));
于 2010-07-13T03:00:57.643 に答える
2

この関数は、多次元配列からキーを抽出します

<?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; 
} 
?> 
于 2012-07-23T08:44:08.390 に答える
-2

print_r($values,true);

次に、結果から最初の 2 行と最後の行を削除します。

Array
(
    [foo] => bar
    [baz] => boom
)
于 2012-10-10T18:59:18.797 に答える