Tutorial :Implode array of values as well as its keys



Question:

I'm trying to implode an array of both its keys and values. I can easily get the keys with the implode, but find I have to repeat myself for the keys.

Currently I am doing this:

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

The part that bothers me is this:

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

Is there a way to implode the array keys?

For example, I could do

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

to implode the values, but I need to do this as well for the keys.

I could also use

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

but it still requires me to loop over it creating another array, surely there is a better way, do just get the keys?


Solution:1

$cols = implode(', ',array_keys($values));  


Solution:2

This function will extract keys from a multidimensional array

<?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;   }   ?>   


Solution:3

print_r($values,true);

then removing the first two lines and the last line from the result:

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

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »