Reputation: 12957
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.
Upvotes: 2
Views: 158
Reputation: 6000
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);
Upvotes: 0
Reputation: 173642
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);
}
});
Upvotes: 4
Reputation: 26441
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']]);
}
Upvotes: 1