2013-02-19 2 views
0

안녕하세요 후속으로이 기능을 사용하여 배열에 0 1 5를 콤마로 구분 문자열 컬렉션 2 3 15 4 18 20 변환PHP 배열 배열

지금,이 배열에서 0 1 5
Array ([0] => 0 1 5 [1] => 2 3 15 [2] => 4 18 20) 
Mon 1 am 5 am

4 18 20Thur 6 pm 8 pm 수단이 때문에 제 2 개 자리 숫자는 24 시간 형식을 나타내는 나머지 요일을 나타내는 어떻게 I 출력 형식으로 기존 배열?

Array ([0] => Mon 1 am 5 am [1] => Tue 3 am 3 pm [2] => Thur 6 pm 8 pm) 

감사

평일를 들어
+0

하지, 난 필요가 하위 배열로 배열을 깰 수 있는지 확실하지 오전 각 결과를 시간과 시간에 할당하십시오. – d3bug3r

+0

실제로 질문에 대답 한 경우 대답을 수락하는 것을 고려하십시오 (왼쪽의 눈금을 클릭하십시오). – michi

답변

0

, 내가 제안 :

$weekday=array('Mon','Tue','Wed','Thu','Fri','Sat','Sun');  

foreach ($openHours As &$openHour) { 
    $foo = explode(' ',$openHour); 
    $openHour=$weekday[$foo].' '. // <-- write yourself a nice function to convert 24h to 12h, maybe there's something like this in PHP already?  
} 
0

이 시도 : 나는 필터링 된 버전을 얻을 array_map 사용하는 것이

// This will be used for the week days 
$weekdays = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); 

// Loop through each date 
foreach($openHrs as &$temp) { 
    // Separate the numbers 
    $temp = explode(" ", $temp); 

    // Change from a 24 hrs clock to a 12 hrs clock 
    $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . 'pm' : $temp[1] . 'am'; 
    $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . 'pm' : $temp[2] . 'am'; 

    // Update the element 
    $temp = $weekdays[$temp[0]] . ' ' . $temp[1] . ' ' . $temp[2]; 
} 
+0

은 잘 작동하지 않는 것 같습니다. – d3bug3r

+0

@zlippr 죄송합니다 ... '기호'를 놓쳤습니다. 그것을 고정시키고, 지금 시도하십시오. –

+0

nope..return nothing $ openHrs 결과는 다음과 같습니다. foreach를 사용할 때 Array ([0] => 0 1 [1] => 2 3 15 [2] => 4 18 20) 아무것도 .. – d3bug3r

2

. mktime()을 사용하여 날짜를 만들고 date()를 사용하여 날짜를 지정할 수 있습니다. 나는이 해결책이 될 것으로 판단 :

$filtered = array_map(function($incoming) { 
    $parts = explode(' ', $incoming); 
return 
    date('D', mktime(0,0,0,1, $parts[0])) . ' ' . 
    date('g a', mktime($parts[1])) . ' ' . 
    date('g a', mktime($parts[2])); 
}, $openHrs); 
+0

잘 작동하지 않는 것 같습니다. – d3bug3r

+0

게시 한 데이터로 테스트 해본 결과 작동했습니다. :(당신이 얻을 수있는 출력을 지정해 주면 올바르게 작동하지 않는다고 믿을 수 있습니까? 아마도 고칠 수 있습니다. –

+0

@AaronSaray : 멋진 하나! – michi

0

더 나은 배열 구조 그래서 나는 구분 기호로 공백 다시 각 Arrayelement 폭발 것 :이 구조가있는 경우

Array ([0] => Array(0, 1, 5), [1] => Array(1, 3, 3) [2] => Array(4, 18, 18)) 

아마 여러 가지가 있습니다를 구혼. date() 및 타임 스탬프가 포함 된 솔루션이있을 수 있지만 그 점에 대해서는 솔직하게 확신 할 수 없습니다. 다른 해결책이 될 것입니다. 평일과 함께 다른 배열을 정의하십시오.

$weekdays = array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"); 

그런 다음 해당 배열의 색인으로 사용 된 숫자를 사용하여 올바른 요일을 출력 할 수 있습니다.

function twentyFourHourToAmPM($number) { 
    if ($number > 12) { 
     return ($number - 12)." pm"; 
    } else { 
     return $number." am"; 
    } 
} 

출력 모든 것을 다음과 같이 작동합니다 : 당신이 조금 selfmade 기능 람에 출력 할 수 근무 시간 많은

foreach ($openHrs as $key => $value) { 
    echo $weekdays[$value[0]]." ".twentyFourHourToAmPM($value[1])." - ".twentyFourHourToAmPM($value[2]); 
}