Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP从字符串中删除一些字符_Php_Arrays_String_Datetime_Multidimensional Array - Fatal编程技术网

如何使用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" =

我需要使用PHP从字符串按值搜索中删除一些字符。我在下面解释我的代码

当前数据

$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手册