如何使用PHP从字符串中删除一些字符
我需要使用PHP从字符串按值搜索中删除一些字符。我在下面解释我的代码 当前数据如何使用PHP从字符串中删除一些字符,php,arrays,string,datetime,multidimensional-array,Php,Arrays,String,Datetime,Multidimensional Array,我需要使用PHP从字符串按值搜索中删除一些字符。我在下面解释我的代码 当前数据 $datArr = array( array( "name" => "Ram", "id" => 1, "date" => "12/04/2017 05:31:57 AM" ), array( "name" => "Rahim", "id" => 5, "date" =
$datArr = array(
array(
"name" => "Ram",
"id" => 1,
"date" => "12/04/2017 05:31:57 AM"
),
array(
"name" => "Rahim",
"id" => 5,
"date" => "12/03/2017 12:31:57 PM"
),
array(
"name" => "Raj",
"id" => 4,
"date" => "12/04/2017 05:31:57 PM"
)
);
预期产出
$datArr = array(
array(
"name" => "Ram",
"id" => 1,
"date" => "12/04/2017 05:31:57"
),
array(
"name" => "Rahim",
"id" => 5,
"date" => "12/03/2017 12:31:57"
),
array(
"name" => "Raj",
"id" => 4,
"date" => "12/04/2017 05:31:57"
)
);
$datArr = array(
array(
"name" => "Ram",
"id" => 1,
"date" => "12/04/2017 05:31:57 AM"
),
array(
"name" => "Rahim",
"id" => 5,
"date" => "12/03/2017 12:31:57 PM"
),
array(
"name" => "Raj",
"id" => 4,
"date" => "12/04/2017 05:31:57 PM"
)
);
$datArr = array(
array(
"name" => "Ram",
"id" => 1,
"date" => "12/04/2017 05:31:57"
),
array(
"name" => "Rahim",
"id" => 5,
"date" => "12/03/2017 12:31:57"
),
array(
"name" => "Raj",
"id" => 4,
"date" => "12/04/2017 05:31:57"
)
);
从上面的数组中有一个date
字段值,我需要使用PHP从所有日期中删除AM/PM
$datArr=array(array("name"=>"Ram","id"=>1,"date"=>"12/04/2017 05:31:57 AM"),array("name"=>"Rahim","id"=>5,"date"=>"12/03/2017 12:31:57 PM"),array("name"=>"Raj","id"=>4,"date"=>"12/04/2017 05:31:57 PM"));
使用foreach循环遍历数组。
对于日期值,请执行以下操作
将日期字符串转换为datetime对象
$time = strtotime($dateKeyValueInArray);
现在设置此时间戳的日期格式
$newformat = date('Y-m-d',$time);
通过使用查看输出
echo $newformat;
参考链接是
希望它有帮助:)您可以通过
str\u replace()
在foreach
循环上完成它
代码
foreach ($datArr as &$dat) {
$dat['date'] = str_replace([' AM', ' PM'], "", $dat['date']);
}
输入
$datArr = array(
array(
"name" => "Ram",
"id" => 1,
"date" => "12/04/2017 05:31:57"
),
array(
"name" => "Rahim",
"id" => 5,
"date" => "12/03/2017 12:31:57"
),
array(
"name" => "Raj",
"id" => 4,
"date" => "12/04/2017 05:31:57"
)
);
$datArr = array(
array(
"name" => "Ram",
"id" => 1,
"date" => "12/04/2017 05:31:57 AM"
),
array(
"name" => "Rahim",
"id" => 5,
"date" => "12/03/2017 12:31:57 PM"
),
array(
"name" => "Raj",
"id" => 4,
"date" => "12/04/2017 05:31:57 PM"
)
);
$datArr = array(
array(
"name" => "Ram",
"id" => 1,
"date" => "12/04/2017 05:31:57"
),
array(
"name" => "Rahim",
"id" => 5,
"date" => "12/03/2017 12:31:57"
),
array(
"name" => "Raj",
"id" => 4,
"date" => "12/04/2017 05:31:57"
)
);
输出
$datArr = array(
array(
"name" => "Ram",
"id" => 1,
"date" => "12/04/2017 05:31:57"
),
array(
"name" => "Rahim",
"id" => 5,
"date" => "12/03/2017 12:31:57"
),
array(
"name" => "Raj",
"id" => 4,
"date" => "12/04/2017 05:31:57"
)
);
$datArr = array(
array(
"name" => "Ram",
"id" => 1,
"date" => "12/04/2017 05:31:57 AM"
),
array(
"name" => "Rahim",
"id" => 5,
"date" => "12/03/2017 12:31:57 PM"
),
array(
"name" => "Raj",
"id" => 4,
"date" => "12/04/2017 05:31:57 PM"
)
);
$datArr = array(
array(
"name" => "Ram",
"id" => 1,
"date" => "12/04/2017 05:31:57"
),
array(
"name" => "Rahim",
"id" => 5,
"date" => "12/03/2017 12:31:57"
),
array(
"name" => "Raj",
"id" => 4,
"date" => "12/04/2017 05:31:57"
)
);
请尝试此操作的foreach循环
$datArr=array(array("name"=>"Ram","id"=>1,"date"=>"12/04/2017 05:31:57 AM"),array("name"=>"Rahim","id"=>5,"date"=>"12/03/2017 12:31:57 PM"),array("name"=>"Raj","id"=>4,"date"=>"12/04/2017 05:31:57 PM"));
print_r($datArr);
foreach($datArr as $key=>$value)
{
$datArr[$key]['date'] = date('m/d/Y H:i:s',strtotime($value['date']));
}
echo "after";
print_r($datArr);
此代码的输出
Array
(
[0] => Array
(
[name] => Ram
[id] => 1
[date] => 12/04/2017 05:31:57 AM
)
[1] => Array
(
[name] => Rahim
[id] => 5
[date] => 12/03/2017 12:31:57 PM
)
[2] => Array
(
[name] => Raj
[id] => 4
[date] => 12/04/2017 05:31:57 PM
)
)
afterArray
(
[0] => Array
(
[name] => Ram
[id] => 1
[date] => 12/04/2017 05:31:57
)
[1] => Array
(
[name] => Rahim
[id] => 5
[date] => 12/03/2017 12:31:57
)
[2] => Array
(
[name] => Raj
[id] => 4
[date] => 12/04/2017 17:31:57
)
)
试试这个。这是一个简单易懂的例子
substr
函数用于从0
开始到length-2
提取字符串的一部分,以排除AM/PM
foreach($datArr as $key => $value){
$datArr[$key]['date'] = substr($value['date'], 0, strlen($value['date'])-2);
}
print_r($datArr);
快乐编码:-)使用rtrim去除尾砂,如下所示
$datArr = array_map(function($v){
$v['date'] = rtrim($v['date'], " APMapm");
return $v;
}, $datArr);
您可以使用正则表达式通过循环删除不需要的单词
foreach($datArr as &$i)
{
$i['date']=preg_replace('[AM|PM]',"",$i['date']);
}
print_r ($datArr);
输出
我想说一下我的文章,如果你直接使用字符串函数删除AM/PM,我想你可能会有错误的日期时间。如果你这样做,你将如何区分上午5点到下午5点?现在你会得到错误的数据 如果你要在5点后取出PM,那么你需要将其格式化为军事时间(17)。要做到这一点,您需要先转换每次。您可以使用
DateTime
:
为什么,只要在输出它时执行,或者在创建它时不要将它放在那里。尝试foreach循环检查键名'date',并从值中删除不需要的部分。我这样做是
foreach($datArr as$key=>$value){/*if(preg_match('(am | PM),$value['date'])==1{$datArr[$key]['date']=str replace('search',replace,subject);}*/if(strpos('value['date'],'AM')==true){$datArr[$key]['date']=str_replace('AM',''.$value['date']);}if(strpos('value['date'],'PM')==true){echo'PM br>'.$datArr key['date']=str replace('PM','value['date']);}
。但它并没有按预期给出输出。@subhra您可以通过将要替换的内容数组传递给str_replace()通过一条语句来实现这一点
。查看我的答案了解更多信息。使用字符串函数是否危险?如果删除它们,现在如何区分下午5点和上午5点?如果要删除上午5点和上午5点,是否也应该转换为军事时间PM@kris-这是一个很好的解决方案,你能解释一下APMapm的工作原理吗,谢谢。它列出了要删除的所有字符。您可以参考php手册