2014-01-18 57 views
1

嗨我仍然很新的PHP,我想保存三個不同的東西在我將拉動我的數據庫的數組。現在我只需要幫助設置陣列。對於數據庫的每一行,我想從中排序3件事,一年中的一週(比如43),那一週我工作的小時數(比如說29)和年份(比如說2013)。所以剛成立我放了一堆假數據,像這樣的數組:通過多維數組運行foreach循環

$hours = array(
    "week" => array(1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51), 
    "hours" => array(65,56,34,76,87,43,23,43,53,23,65,34,23,54,65,75,34,23,34,54,34,54,65,34,23,76), 
    "year" => array(2013,2013,2013,2013,2013,2013,2013,2013,2013,2013,2013,2013,2013,2013,2013,2013,2013,2013, 2014,2014,2014,2014,2014) 
); 

我的第一個問題是:我的陣列正確設置什麼我試着來形容。 我的第二個問題:如果它設置正確,我如何運行一個foreach循環,以便我可以訪問所有三個變量,一年的一週,幾個小時和一年?

回答

1

正如我所見,你需要它有所不同的方式。

在數據庫中應該有一些表格,列表爲:id,week,hoursyear

所以在PHP相當於這將是:

$result = [ 
    ['id' => 1, 'week' => 1, 'hours' => 40, 'year' => 2014], 
    ['id' => 2, 'week' => 3, 'hours' => 53, 'year' => 2014], 
    ['id' => 3, 'week' => 14, 'hours' => 32, 'year' => 2014], 
]; 

然後你可以使用的foreach找到某行:

$target = 3; # assume target week we trying to search is 3 

$row_found = null; 

foreach($result as $row) { 
    if($row['week'] == $target) { 
    $row_found = $row; 

    break; 
    } 
} 

與您examle你這將打破,如果你的陣列由一些原因會有所不同。

Additionaly,您可以按周重新索引你的數組:

$result = [ # that's result from mysql 
    ['id' => 1, 'week' => 1, 'hours' => 40, 'year' => 2014], 
    ['id' => 2, 'week' => 3, 'hours' => 53, 'year' => 2014], 
    ['id' => 3, 'week' => 14, 'hours' => 32, 'year' => 2014], 
]; 

$result_indexed = []; 

foreach($result as $row) { 
    $result_indexed[$row['week']] = $row; 
} 

然後某一週可以很容易地與$result_indexed[3]訪問例如用於星期#3

+0

我不想貫穿foreach循環什麼我從數據庫中得到了我想添加星期加在一起的第一週,如第1周+2,然後3 + 4等,所以我想要做的是有一個if語句檢查如果一年的數字,如果年份是可分爲兩個使用模數如果是的話,那麼它意味着它是一個偶數週,所以在這個星期到前一個星期,然後把這兩個星期(假設它是1和2)作爲1在新的數組中, d小時(例如12 + 13)爲25小時的新數組 – user2989367

+0

,並且年份對於兩者來說都是相同的,所以讓我們說2013年,所以數組將包含周=> 1小時=> 25和年=> 2013你明白我的意思嗎? – user2989367

+0

@ user2989367不完全,真的,它沒有任何意義。您能否說一下您長期努力實現的目標? – baldrs