2

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.

1
  • If you generate this array, couldn't it be better to put value in format you need while generation? Commented Jan 30, 2014 at 11:53

3 Answers 3

4

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);
    }
});
Sign up to request clarification or add additional context in comments.

Comments

1

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']]);
}

Comments

0

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

1 Comment

Did you even test this?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.