PHP-对数组值执行函数

kap*_*tan 0 php laravel

我有这个数组:

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)

Chr*_*sco 5

使用array_map()

$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()是返回的数组是一个新数组,因此您不会更改初始数组。通常不改变数据结构是一种好习惯

  • @Ianis-不需要`use`,因为`$ item`引用了第二个参数`$ my_array`的当前循环元素。 (2认同)