2010-03-29 32 views
10

Tôi biết điều này là ngu ngốc, nhưng làm cách nào để tôi thực hiện việc này? Tôi muốn tạo một loạt bảy ngày qua PHP Ý tôi là tất cả bảy ngày trong tuần. Tôi không muốn viết chúng như mình:cách tạo mảng tên ngày trong tuần php

sunday monday tuesday ...etc 

và ngày sẽ được bắt đầu từ Chủ Nhật có nghĩa là nếu hôm nay là 29 tháng 3 (thứ hai) sau đó nó tự động lấy ngày hiện tại và tạo ra một loạt các các ngày trong tuần bắt đầu từ Chủ Nhật.

mảng luôn được theo cách này

$weakarray=("sunday","monday",......,"saturday"); 
+1

Nếu mảng luôn ở định dạng '$ weekarray = (" chủ nhật "," thứ hai ", ......," thứ bảy "); thì ngày hiện tại phải làm gì với điều này? Bạn cần phải làm rõ bản thân một chút ở đây. –

+0

tôi nghĩ rằng anh ấy có nghĩa là yếu tố 0 sẽ là ngày hiện tại .. nếu không nó không có ý nghĩa để tạo ra nó động –

+0

Không! ... tôi chỉ muốn tạo ra một mảng động 7 ngày bắt đầu từ chủ nhật ... ngày hiện tại vấn đề chỉ ra rằng ngày hôm nay là ngày hôm nay bằng cách sử dụng css. – diEcho

Trả lời

46

này có thể làm việc ..

$timestamp = strtotime('next Sunday'); 
$days = array(); 
for ($i = 0; $i < 7; $i++) { 
    $days[] = strftime('%A', $timestamp); 
    $timestamp = strtotime('+1 day', $timestamp); 
} 
+0

Câu trả lời hoàn hảo! – diEcho

+0

Tôi nghĩ câu trả lời này sẽ thay đổi tên của các ngày trong tuần tùy thuộc vào cài đặt miền địa phương php –

+0

http: // stackoverflow.com/questions/23603207/specific-week-days-with-repeat-occurrences-php bất kỳ ý tưởng nào cho câu hỏi này –

0
$now = time(); 
$days = array(); 
for ($i = 0; $i < 7; $i++) { 
    $days[] = strftime('%A', $now); 
    $now += 60*60*24; 
} 
+0

tôi nói mảng nên được alwayz bắt đầu từ chủ nhật ..... – diEcho

+1

thì tại sao bạn muốn tạo mảng động ...? nó chỉ là phụ phí. –

33

Nếu họ luôn cần phải bắt đầu với chủ nhật tại sao bạn muốn tạo mảng động? Có chuyện gì với việc này?

$days = [ 
    'Sunday', 
    'Monday', 
    'Tuesday', 
    'Wednesday', 
    'Thursday', 
    'Friday', 
    'Saturday', 
]; 

Bất kỳ giải pháp nào khác sẽ làm cho mã của bạn khó hiểu hơn và trong trường hợp này làm cho mã này có vẻ quá mức cần thiết.

+3

tôi nghĩ rằng nó sẽ được intresting để tạo ra thông qua php – diEcho

+10

@I Giống như PHP Đó là vô nghĩa để viết mã mà luôn luôn làm điều tương tự và sản xuất cùng một kết quả. Trừ khi nó dễ dàng hơn để thể hiện kết quả trong mã hơn là viết nó trực tiếp, nhưng đó không phải là trường hợp ở đây. – deceze

+0

@deceze Tôi đồng ý với bạn thưa ngài, buti chỉ muốn học thêm điều gì đó, làm phiền nó làm phiền mọi tâm trí tuyệt vời ..... tôi có thể xóa câu hỏi này không ??? y tất cả đều hét lên khi tôi yêu cầu một cái gì đó khác nhau – diEcho

2

Hãy thử:

for($i=1;$i<8;$i++) 
$weekdays [] = date("l",mktime(0,0,0,3,28,2009)+$i * (3600*24)); 
var_dump($weekdays); 

Output:

C:\>php b.php 
array(7) { 
    [0]=> 
    string(6) "Sunday" 
    [1]=> 
    string(6) "Monday" 
    [2]=> 
    string(7) "Tuesday" 
    [3]=> 
    string(9) "Wednesday" 
    [4]=> 
    string(8) "Thursday" 
    [5]=> 
    string(6) "Friday" 
    [6]=> 
    string(8) "Saturday" 
} 
+0

vì vậy tôi phải đặt ngày ... luôn luôn ?? – diEcho

+0

tôi phải mở mã php hàng ngày và phải chỉnh sửa ngày? – diEcho

+1

Bạn có một loạt các ngày trong tuần. Ngày hiện tại không thay đổi mảng. Tại sao nó lại quan trọng? –

0
$days = array(); 
for ($x = 0; $x < 7; $x++) { 
    $days[] = date('l', strtotime("+$x days", strtotime('2010-03-28'))); 
} 

Mặc dù nghiêm túc, trừ khi câu hỏi của bạn bị hiểu lầm, tôi hoàn toàn thứ hai Câu trả lời của Yacoby.

+0

bất kỳ ý tưởng nào cho câu hỏi này http://stackoverflow.com/questions/23603207/particular-week-days-with-repeat-occurences-php –

0

sử dụng DateTime đối tượng

$date = new DateTime(); 
$weekdays = array(); 
for($i=0; $i<7; $i++){ 
    $weekdays[] = $date->format('l'); 
    $date->modify('+1 day'); 
} 

Nếu bạn muốn bắt đầu với Chủ nhật, tạo DateTime với ngày chủ nhật (ví dụ, ngày hôm qua):

$date = new DateTime('2010-03-28'); 
+0

bởi mã của bạn, mảng luôn bắt đầu bằng thứ hai – diEcho

+1

Bởi vì hôm nay là Thứ Hai! Nhưng nếu bạn sử dụng $ date = new DateTime ('2010-03-28') ;, nó bắt đầu từ chủ nhật –

1
function dias_semana($days) { 
    $days=explode(',',$days); 
    $semana=""; 
    foreach ($days as $key=>$day){ 
     $semana.=dia_semana($day)."<br​>"; 
    } 
    return $semana; 

} 
function dia_semana($dia) { 
    $days = array(
     'Sunday', 
     'Monday', 
     'Tuesday', 
     'Wednesday', 
     'Thursday', 
     'Friday', 
     'Saturday' 
    ); 
    return $days[$dia]; 

} 
-1
$days = array(); 
for ($i = 0; $i < 7; $i++) { 
    $days[strftime("%w",strtotime("+$i day"))] = strftime('%A', strtotime("+$i day")); 
} 

trong 5.1.0+ PHP bạn có thể sử dụng% N, đặt ngày chủ nhật thành 7 thay vì 0

$days = array(); 
for ($i = 0; $i < 7; $i++) { 
    $days[strftime("%N",strtotime("+$i day"))] = strftime('%A', strtotime("+$i day")); 
} 
0

Tham khảo Câu trả lời TuiTalk ở đây là cách bạn có thể sử dụng nó.

Chỉ cần chọn cách bạn muốn sử dụng, có ba cách sử dụng tùy chọn.

<?php 
$timestamp = strtotime('next Sunday'); 
$days = array(); 
for ($i = 0; $i < 7; $i++) { 
    $days[] = strftime('%A', $timestamp); 
    $timestamp = strtotime('+1 day', $timestamp); 
    echo date("D",$timestamp)."<br>"; 
    //Mon<br>Tue<br>Wed<br>Thu<br>Fri<br>Sat<br>Sun<br> 
    echo date("l",$timestamp)."<br>"; 
    //Monday<br>Tuesday<br>Wednesday<br>Thursday<br>Friday<br>Saturday<br>Sunday<br> 
    echo date("d",$timestamp)."<br>"; 
    //02<br>03<br>04<br>05<br>06<br>07<br>08 
} 

?> 
6

Một câu trả lời cuối chút, sửa đổi của chấp nhận như là câu trả lời tốt nhất

<?php 
    $days = array(); 
    for ($i = 0; $i < 7; $i++) { 
     $days[$i] = jddayofweek($i,1); 
    } 
?> 

Kết quả:

array(7) { 
    [0]=> "Monday" 
    [1]=> "Tuesday" 
    [2]=> "Wednesday" 
    [3]=> "Thursday" 
    [4]=> "Friday" 
    [5]=> "Saturday" 
    [6]=> "Sunday" 
} 

Xem PHP jddayofweek

2

tôi sẽ xem xét bản đồ mảng như hơn cách thanh lịch để đạt được kết quả tương tự.

$days = array_map(function ($day) { 
    return strtolower(date_create('Sunday')->modify("+$day day")->format('l'));} 
    range(0, 6) 
); 
Các vấn đề liên quan