2013-04-30 52 views
0

我有一个内部有多个数组的数组。 我想改变的关键是[“517f467ca2ec9”] [“517f467ca310c”] ...但是,假设我不知道数组关键文本,我使用下面的代码片段给了我一个错误未定义偏移:1个更改PHP多维数组中的数组键

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代码片段

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

问题是? – zerkms 2013-04-30 04:32:52

+0

我如何在我的情况下改变钥匙? – 2013-04-30 04:35:30

+0

“换钥匙”是什么意思? – zerkms 2013-04-30 04:37:07

回答

2

请试试这个代码它会帮助你

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); 
0
$rows[$k]['running_days'] = array_shift($rows[$k]); 
1

看来你有多维数组。你可以试试这个...

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