2012-11-03 47 views
0

我對PHP相當陌生。我試圖每次循環這個數組時更新分數。我的代碼僅在用戶選擇了列表框的第一個值時才起作用,如果未選中它,它將返回零。請幫忙。 這是a.php只會在比較兩個數組後,添加到整型變量中

{ 
    $SkillsArray = array(); 
    $Score=0; 
    $SkillsArray = $_POST['DutiesDesc']; 
    //foreach($SkillsArray as $key =>$value) 
    { 
     $Sentence = $SkillsArray[0]." ".$SkillsArray[1]." ".$SkillsArray[2]." ".$SkillsArray[3]." ".$SkillsArray[4]." ".$SkillsArray[5]." ".$SkillsArray[6]." ".$SkillsArray[7        ]." ".$SkillsArray[8]." ".$SkillsArray[9]." ".$SkillsArray[10]; 
    } 

     //Get the applicants score 
     for($i=0;$i<11;$i++) 
      { 
       if ($SkillsArray[$i] == $Text[$i]) 
        { 
         $Score = $Score+$Val[$i]; 
        } 
      } 

} //**** The following is the HTML part of the code(form) 
<form action = "A.php" method ="POST" enctype="multipart/form-data"> 
<label for="Position">Position:</label><input type="type" name="Position" size="35" /><br /> 
         </p> 
         <p> 
         <!-- <label for="DutiesDesc">Duties Description:&nbsp;</label><textarea name="DutiesDesc" cols="30" rows="5" /></textarea>--> <br /> 
         Job Description 
         <select name="DutiesDesc[]" size=5 multiple="multiple"> 

          <option value="<?php echo $Arow['TextF1']?>"><?php echo $Arow['TextF1']?></option> 
          <option value="<?php echo $Arow['TextF2']?>"><?php echo $Arow['TextF2']?></option> 
          <option value="<?php echo $Arow['TextF3']?>"><?php echo $Arow['TextF3']?></option> 
          <option value="<?php echo $Arow['TextF4']?>"><?php echo $Arow['TextF4']?></option> 
          <option value="<?php echo $Arow['TextF5']?>"><?php echo $Arow['TextF5']?></option> 
          <option value="<?php echo $Arow['TextF6']?>"><?php echo $Arow['TextF6']?></option> 
          <option value="<?php echo $Arow['TextF7']?>"><?php echo $Arow['TextF7']?></option> 
          <option value="<?php echo $Arow['TextF8']?>"><?php echo $Arow['TextF8']?></option> 
          <option value="<?php echo $Arow['TextF9']?>"><?php echo $Arow['TextF9']?></option> 
          <option value="<?php echo $Arow['TextF10']?>"><?php echo $Arow['TextF10']?></option> 
          <option value="<?php echo $Arow['TextF11']?>"><?php echo $Arow['TextF11']?></option> 

         </select><br /> 
+0

哪些選項值?數字?或文字? '$ Arow []'包含與$ text []'相同的值嗎?你也可以嘗試通過'print_r($ SkillsArray);'在你的A.php中調試你的代碼,以找出這個變量的確切內容,並幫助你理解爲什麼有些東西不能按預期工作。如果我的假設是正確的,那麼你的代碼很可能是正確的。 –

+0

嗨,彼得。 SkillsArray包含文本。選項值是從數據庫中檢索的文本。是的,$ Arow []和$ Text []包含相同的數據(文本)。 – user1783675

+0

當我選擇除$ Arow ['TextF1']之外的所有其他選項時,$ Score變量不會更新。它像它沒有進入for循環。但它工作正常,如果我選擇包括$ Arow ['TextF1'] – user1783675

回答

0

該數組$SkillsArray中不具有相同的索引你的$Text陣列。如果選擇第三個(可以說值爲「C」)和第五(如「E」),在列表中的項目,該陣列$SkillsArray將包含以下內容:

$SkillsArray[0] = "c"; 
$SkillsArray[1] = "e"; 

所以,你需要的是一個簡單的搜索你的$SkillsArray,因爲你不能依靠索引符合你的$Text陣列。

if (is_array($SkillsArray)) { 
    for($i = 0; $i < count($Text); $i++) { 
    if (array_search($Text[$i], $SkillsArray) !== false) { 
     $Score += $Val[$i]; 
    } 
    } 
} 

請記住檢查一下,如果$SkillsArray確實是一個數組。如果用戶沒有檢查任何技能,功能array_search將返回false爲每個項目,這將導致最高分。

文檔的功能:countarray_searchis_array

+0

感謝彼得。你真的很有幫助 – user1783675

0
for($i=0;$i<11;$i++) 
      { 
       for($j=0;$j<11;$j++) 
        { 
         if (($SkillsArray[$i] == $Text[$j])) 
          { 
           $Score = $Score+$Val[$j]; 


          } 
        } 

這需要第二循環爲了工作properley :)