Php 删除阵列中除第一个实例以外的所有am/pm
我有一个以美元为单位的时隙阵列:Php 删除阵列中除第一个实例以外的所有am/pm,php,arrays,time,Php,Arrays,Time,我有一个以美元为单位的时隙阵列: 10:00 am,11:00 am,12:00 pm,01:00 pm,02:00 pm,03:00 pm,04:00 pm 我想从阵列中删除除第一个实例以外的所有am/pm: 10:00 am,11:00,12:00 pm,01:00 pm,02:00,03:00, 04:00 str_replace()会将它们全部取出preg_replace允许我限制取出的数量,但不允许我取出除1以外的所有物品。我需要为此编写自己的函数吗?已经有优雅的解决方案了吗?您可
10:00 am,11:00 am,12:00 pm,01:00 pm,02:00 pm,03:00 pm,04:00 pm
我想从阵列中删除除第一个实例以外的所有am/pm
:
10:00 am,11:00,12:00 pm,01:00 pm,02:00,03:00, 04:00
str_replace()
会将它们全部取出preg_replace
允许我限制取出的数量,但不允许我取出除1以外的所有物品。我需要为此编写自己的函数吗?已经有优雅的解决方案了吗?您可以试试这个,它只保留您想要的第一个am/pm字符串:
$timeSlots = array(
"10:00 am",
"11:00 am",
"12:00 pm",
"01:00 pm",
"02:00 pm",
"03:00 pm",
"04:00 pm"
);
$foundAm = false;
$foundPm = false;
foreach( $timeSlots as $index => $timeSlot ) {
if( strpos( $timeSlot, "am" ) !== false && $foundAm === false ) {
$foundAm = true;
continue;
} else if( strpos( $timeSlot, "pm" ) !== false && $foundPm === false ) {
$foundPm = true;
continue;
}
$timeSlots[$index] = trim( str_replace( array( "am", "pm" ) , "", $timeSlot ) );
}
echo "<pre>";
var_dump( $timeSlots );
echo implode( ",", $timeSlots );
若它是一个数组,我想这样的东西可以工作(当然只有在并没有设置键或者你们知道第一个键的情况下)
你想删除数组中的所有am和pm字符串,对吗?@CraigTucker很高兴听到:)
array(7) {
[0]=>
string(8) "10:00 am"
[1]=>
string(5) "11:00"
[2]=>
string(8) "12:00 pm"
[3]=>
string(5) "01:00"
[4]=>
string(5) "02:00"
[5]=>
string(5) "03:00"
[6]=>
string(5) "04:00"
}
10:00 am, 11:00, 12:00 pm, 01:00, 02:00, 03:00, 04:00
$times = array('10:00 am','11:00 am','12:00 pm','01:00 pm','02:00 pm','03:00 pm','04:00 pm');
foreach($times as $key => $time){
if($key != 0){
$search = array(" am", " pm");
$times[$key] = str_replace($search, "", $time);
}
//So if the key is 0 (The first element) continue, else remove the am/pm
}