我有这个数组:
array:2 [?
0 => array:3 [?
"time" => 7780
"name" => "John A. Doe"
"photo" => "johndoe.png"
]
1 => array:3 [?
"time" => 49800
"name" => "Jane B. Doe"
"photo" => "janedoe.png"
]
]
Run Code Online (Sandbox Code Playgroud)
该time值是秒,我的问题是如何循环遍历数组,以便可以运行以下函数:
"time" => $this->secondsToHumanReadable(49800)
我的函数secondsToHumanReadable已经过测试并且可以正常工作,我只希望它插入time数组结果中的值。
更新:
所需的输出将是:
array:2 [?
0 => array:3 [?
"time" => '2 days, 1 hour, 3 minutes, 45 seconds'
"name" => "John A. Doe"
"photo" => "johndoe.png"
]
1 => array:3 [?
"time" => '3 hour, 15 minutes, 20 seconds'
"name" => "Jane B. Doe"
"photo" => "janedoe.png"
]
]
Run Code Online (Sandbox Code Playgroud)
$new_array = array_map(function($item) use ($this) {
$item['time'] = $this->secondsToHumanReadable($item['time']);
return $item;
}, $my_array);
Run Code Online (Sandbox Code Playgroud)
使用的好处array_map()是返回的数组是一个新数组,因此您不会更改初始数组。通常不改变数据结构是一种好习惯