How to change the value of an specific associative

2019-07-24 14:46发布

I've a dynamically generated very huge array called $test_package_data. For your understanding I'm giving below the contents of array $test_package_data.

Now what I want to achieve is convert the value of an array key

$test_duration = ConvertTimeStampToTimeFormate($some_key['test_duration']);

In short I want to update the value of a key ['test_duration'] eveywhere in the array. But not understanding how should I loop over the array and achieve the desired result.

3条回答
我欲成王,谁敢阻挡
2楼-- · 2019-07-24 14:59

You can use array_walk_recursive() and adjust a value if the key matches 'test_duration':

array_walk_recursive($test_package_data, function(&$value, $key) {
    if ($key == 'test_duration') {
        $value = ConvertTimeStampToTimeFormate($value);
    }
});
查看更多
一纸荒年 Trace。
3楼-- · 2019-07-24 15:15

You can loop over $test_package_data['category_detail'][0]['test_detail']. So code will be something like,

foreach($test_package_data['category_detail'][0]['test_detail'] as $key => $value){
    $test_package_data['category_detail'][0]['test_detail'][$key]['test_duration'] = 
    ConvertTimeStampToTimeFormate($value['test_duration']]);
}
查看更多
贪生不怕死
4楼-- · 2019-07-24 15:16

Although array_walk_recursive is the best, but this should also work.

function changValue($dataArray) {
  foreach($dataArray as $key=>$val) {
   if(is_array($val)) {
     return changValue($val);
   } else {
     if ($key == 'test_duration') {
        $value = ConvertTimeStampToTimeFormate($value);
    }
   }
  }
}

changeValue($yourArray);
查看更多
登录 后发表回答