PHP在数组中爆炸

Beq*_*eqa -4 php arrays

我想知道是否有可能转换以下数组:

Array (
    "2016-03-03 19:17:59",
    "2016-03-03 19:20:54",
    "2016-05-03 19:12:37"
)
Run Code Online (Sandbox Code Playgroud)

进入:

Array (
    "2016-03-03",
    "2016-03-03",
    "2016-05-03"
)
Run Code Online (Sandbox Code Playgroud)

没有创建任何循环?

Pra*_*man 9

如果可以使用array_map,则没有显式循环,尽管内部循环:

function format_date($val) {
  $v = explode(" ", $val);
  return $v[0];
}
$arr = array_map("format_date", $arr);
Run Code Online (Sandbox Code Playgroud)

从PHP手册:

array_map()返回一个数组,其中包含array1callback函数应用于每个元素之后的所有元素.callback函数接受的参数数量应该与传递给的数组的数量相匹配array_map().

此外,当您处理日期时,正确的方法如下:

return date("Y-m-d", strtotime($val));
Run Code Online (Sandbox Code Playgroud)

使用循环的简单方法是使用foreach():

foreach($arr as $key => $date)
  $arr[$key] = date("Y-m-d", strtotime($date));
Run Code Online (Sandbox Code Playgroud)

这是我能想到的最简单的循环方式index.


输入:

<?php
$arr = array(
    "2016-03-03 19:17:59",
    "2016-03-03 19:20:54",
    "2016-05-03 19:12:37"
);
function format_date($val) {
  $v = explode(" ", $val);
  return $v[0];
}
$arr = array_map("format_date", $arr);

print_r($arr);
Run Code Online (Sandbox Code Playgroud)

产量

Array
(
    [0] => 2016-03-03
    [1] => 2016-03-03
    [2] => 2016-05-03
)
Run Code Online (Sandbox Code Playgroud)

演示:http://ideone.com/r9AyYV

  • 虽然这仍然是内部循环,但我认为,只要OP看不到它们就不会介意:P (2认同)