max li
max li

Reputation: 2457

Change array keys in PHP multidimensional array

I have an array that has multiple arrays inside. I am trying to change of the key which is ["517f467ca2ec9"] ["517f467ca310c"]... however assume that i don't know about the array key text, I am using the snippet below which gave me an error Undefined offset: 1

array(74) {
  [0]=>
  array(9) {
    ["517f467ca2ec9"]=>
    string(0) ""
    ["517f467ca310c"]=>
    string(0) ""
    ["517f467ca321a"]=>
    string(0) ""
    ["517f467ca3320"]=>
    string(0) ""
    ["517f467ca3427"]=>
    string(0) ""
    ["517f467ca352a"]=>
    string(0) ""
    ["517f467ca3666"]=>
    string(0) ""
    ["517f467ca378d"]=>
    string(0) ""
    ["517f467ca3897"]=>
    string(0) ""
  }
  [1]=>
  array(9) {
    ["517f467ca2ec9"]=>
    string(0) ""
    ["517f467ca310c"]=>
    string(0) ""
    ["517f467ca321a"]=>
    string(0) ""
    ["517f467ca3320"]=>
    string(0) ""
    ["517f467ca3427"]=>
    string(0) ""
    ["517f467ca352a"]=>
    string(0) ""
    ["517f467ca3666"]=>
    string(0) ""
    ["517f467ca378d"]=>
    string(0) ""
    ["517f467ca3897"]=>
    string(0) ""
  } 

php snippet

foreach ($rows as $k=>$v){
   $rows[$k] ['running_days'] = $rows[$k] [0];
   unset($rows[$k][0]);
}

Upvotes: 0

Views: 1159

Answers (3)

Punam Sapkota
Punam Sapkota

Reputation: 125

It seems you have multidimensional array. You can try this one...

// array container
$records = 'Your array with key here';

// init new array container
$myarray = array();

foreach ($records as $items) {
    foreach ($items as $k => $v) {
        $myarray[$k]['running_days'] = $v;
    }
}

printr_r($myarray);

Upvotes: 1

Mark Parnell
Mark Parnell

Reputation: 9215

$rows[$k]['running_days'] = array_shift($rows[$k]);

Upvotes: 0

Praveen kalal
Praveen kalal

Reputation: 2129

Please try this code it will help you

function changeKey(&$data)
{
  foreach ($data as $key => $value)
  {
    // Convert key
    $newKey = 'any'; // new key goes here

    // Change key if needed
    if ($newKey != $key)
    {
      unset($data[$key]);
      $data[$newKey] = $value;
    }

    // Handle nested arrays
    if (is_array($value))
    {
      changeKey($data[$key]);
    }
  }
}

$test = array('foo' => 'bar', 'moreFoo' => array('more' => 'foo'));
changeKey($test);
print_r($test);

Upvotes: 2

Related Questions