2010-09-15 126 views
3

這是一個簡單的評分系統。有3個值包含一個帶有描述/名稱的百分比。我只想顯示描述/名稱。回聲PHP數組只顯示每個值的第一個字母

出於某種原因,它會顯示:

一個

牛逼

這是我的腳本:

if(isset($_POST['analyze'])) { 

    // get total value of "Time Management" section 
    for($i = 0; $i < 19; $i++) { 
     $time_management_total += $_POST["time_management_Q$i"]; 
    } 


    // get total value of "Attract Clients" section 
    for($i = 0; $i < 16; $i++) { 
     $attract_clients_total += $_POST["attract_clients_Q$i"]; 
    } 

    // get total value of "Internet Marketing" section 
    for($i = 0; $i < 21; $i++) { 
     $internet_marketing_total += $_POST["internet_marketing_Q$i"]; 
    } 


    // calculate user's personal "Time Management" score 
    $time_management_rating = ($time_management_total/19)/5; 

    // calculate user's personal "Attract Clients" score 
    $attract_clients_rating = ($attract_clients_total/16)/5; 

    // calculate user's personal "Internet Marketing" score 
    $internet_marketing_rating = ($internet_marketing_total/21)/5; 


    // add user ratings to array 
    $user_rating[0] = array('percent' => $time_management_rating, 'description' => 'Time Management'); 
    $user_rating[1] = array('percent' => $attract_clients_rating, 'description' => 'Attract Clients'); 
    $user_rating[2] = array('percent' => $internet_marketing_rating, 'description' => 'Internet Marketing'); 


    // reverse sort the array - highest percentage first 
    rsort($user_rating); 


    // echo the description 
    foreach($user_rating as $category) { 
     foreach($category as $description) { 
      echo $description[description] . "<br />"; 
     } 
    } 
} 
?> 
+0

你因爲你只能得到第一封信引用字符串char數組。所以索引0將是字符串的第一個字母:) – justinl 2010-09-15 05:46:55

回答

6

你要做的:

foreach($user_rating as $category) { 
     echo $category['description'] . "<br />"; 
} 

說明你的代碼:

你的陣列就像

$user_rating = array(array('percent' => ..., 'description' => ...), array(...)); 

這意味着你有一個二維數組。當你做foreach($user_rating as $category),你正在循環外部數組。這意味着$category將是一個數組,即array('percent' => ..., 'description' => ...)

現在你犯了錯誤,再次循環該數組,這意味着$description將始終是字符串值percentdescription

在PHP中,您可以使用數組符號訪問字符串以獲取該位置處的字符。由於description未定義,因此可能會解析爲0,您將得到第一個字符。

$foo = 'bar'; 
echo $foo[0]; 
// echos 'b' 

只要加上一些echo S,你可以看到,該元素在你的循環包含值:

$user_rating[0] = array('description' => 'Time Management'); 
$user_rating[1] = array('description' => 'Attract Clients'); 
$user_rating[2] = array('description' => 'Internet Marketing'); 

foreach($user_rating as $category) { 
    echo '$category: ' . $category . PHP_EOL; 
    foreach($category as $description) { 
     echo '$description: '. $description . PHP_EOL; 
     echo $description[description] . "<br />" .PHP_EOL; 
    } 
} 

$category: Array 
$description: Time Management 
T<br /> 
$category: Array 
$description: Attract Clients 
A<br /> 
$category: Array 
$description: Internet Marketing 
I<br /> 
+0

謝謝菲利克斯,這個伎倆! – 2010-09-15 05:46:01

1

變化

echo $description[description] 

echo $description['description'] 
0

嘗試

foreach($user_rating as $category) { 
      echo $category['description'] . "<br />"; 
    }