2014-10-06 154 views
0

是否有更快的方式在多維數組的每個片段中添加所有數字,而不是僅僅手動完成所有數字?我之前被告知可以使用foreach循環,但是我碰到了一堵磚牆。在多維數組中添加數字

我想讓它顯示每個校園的課程註冊總數,然後顯示每門課程的學生總數。

我覺得答案是盯着我,但我不確定。

<? 

$campus = array(); 

$campus[1]['course1'] = 5; // <---- Number enrolled 
$campus[1]['course2'] = 15; 
$campus[1]['course3'] = 22; 
$campus[1]['course4'] = 21; 
$campus[1]['course5'] = 12; 
$campus[1]['course6'] = 25; 
$campus[1]['course7'] = 16; 
$campus[1]['course8'] = 11; 
$campus[1]['course9'] = 17; 
$campus[1]['course10'] = 23; 

$campus[2]['course1'] = 11; 
$campus[2]['course2'] = 23; 
$campus[2]['course3'] = 51; 
$campus[2]['course4'] = 25; 
$campus[2]['course5'] = 32; 
$campus[2]['course6'] = 35; 
$campus[2]['course7'] = 32; 
$campus[2]['course8'] = 52; 
$campus[2]['course9'] = 25; 
$campus[2]['course10'] = 21; 

$campus[3]['course1'] = 2; 
$campus[3]['course2'] = 12; 
$campus[3]['course3'] = 32; 
$campus[3]['course4'] = 32; 
$campus[3]['course5'] = 25; 
$campus[3]['course6'] = 26; 
$campus[3]['course7'] = 29; 
$campus[3]['course8'] = 12; 
$campus[3]['course9'] = 15; 
$campus[3]['course10'] = 11; 

echo "<pre>"; 
print_r($campus); 
echo "<br/>"; 

foreach($campus as $key=>$value) 
{ 

} 
+0

是'array_sum'你在找什麼? – Barmar 2014-10-06 15:51:40

+0

'foreach($ campus = $ key => $ values){echo $ key,' - >',array_sum($ values); }' – 2014-10-06 15:52:02

+0

對於參加每門課程的學生總數,您可以使用array_column()和array_sum()(如果您使用PHP> = 5.5),否則使用array_map()而不是array_column() – 2014-10-06 15:53:35

回答

0
$courses = array(); 
foreach($campus as $key=>$value) 
{ 
    foreach($value as $course=>$num) 
     $courses[$course] += $num; 
} 
var_dump($courses); 

應該這樣做。

0

您可以使用PHP的array_sum()函數,它會將您給它的數組的值加起來。

<?php 

$sum = array_sum($campus[1]); 
echo $sum; 
1

使用array_sum()添加在數組中的號碼,並使用array_map()將它應用到$campus數組的每個元素。

$total_by_campus = array_map('array_sum', $campus); 
+0

當我試圖做到這一點,我最終得到了這個錯誤 - 注意:數組到字符串轉換在C:\ xampp \ htdocs \ Work \ arrays_courses.php在線43 – Knifehead 2014-10-06 15:59:50

+0

什麼是43行?你不能回顯一個數組,你必須使用'var_dump()'來查看它裏面的內容。 – Barmar 2014-10-06 16:00:34

0
$totcount = 0; 
$count = array(); 
foreach($campus as $key=>$value) 
{ 
    foreach($value as $value1 => $value2) 
    { 
     $count[$value1]+=$value2; 
     $totcount++; 
    } 
} 

print_r($count); 
echo "<br><br><br>". $totcount; 
0

看看:

$campus = array 
(
    '1' => array 
    (
     'course1' => 5, 
     'course2' => 15, 
     'course3' => 22, 
     'course4' => 21, 
     'course5' => 12, 
     'course6' => 25, 
     'course7' => 16, 
     'course8' => 11, 
     'course9' => 17, 
     'course10' => 23, 
    ), 
    '2' => array 
    (
     'course1' => 11, 
     'course2' => 23, 
     'course3' => 51, 
     'course4' => 25, 
     'course5' => 32, 
     'course6' => 35, 
     'course7' => 32, 
     'course8' => 52, 
     'course9' => 25, 
     'course10' => 21, 
    ), 
    '3' => array 
    (
     'course1' => 2, 
     'course2' => 12, 
     'course3' => 32, 
     'course4' => 32, 
     'course5' => 25, 
     'course6' => 26, 
     'course7' => 29, 
     'course8' => 12, 
     'course9' => 15, 
     'course10' => 11, 
    ), 
); 

foreach ($campus as $key0 => $value0) 
{ 
    // $key0 == (1, 2, 3) 
    // $value0 == array(course1 => 5, course2 => 15, course3 => 22, ...) 
    foreach ($value0 as $key1 => $value1) 
    { 
     // $key1 == (course1, course2, course3, ...) 
     // $value1 == (5, 15, 22, ...) 
    } 
} 

很抱歉,但你張貼問題:「如何檢查數組中的內容,看看他們有什麼數字?」

<?php 

$cowboyfile = "COWBOY.TXT"; 

$data = array(); 
$data[] = "Colt Peacemaker, 12.20"; 
$data[] = "Holster, 2.00"; 
$data[] = "Levi Strauss Jeans, 1.35"; 
$data[] = "Saddle, 40.00"; 
$data[] = "Stetson, 10.00"; 
// Writing in the File 
file_put_contents($cowboyfile, implode("\r\n", $data)); 

// Displaying all items above $10 
$items = file($cowboyfile); 
$item_filtred = array(); 
for ($i = 0; $i < count($items); $i++) 
{ 
    $item = $items[$i]; 
    $item_price = substr($items[$i], strpos($item, ',') + 1); 
    if ($item_price >= 10) 
    { 
     $item_filtred[] = $item; 
    } 
} 
print_r($item_filtred);