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 />
4

2 回答 2

1

数组中的值$SkillsArray与您的数组的索引不同$Text。如果您选择列表中的第 3 个(假设值为“c”)和第 5 个(例如“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

于 2012-11-04T15:00:03.853 回答
0
for($i=0;$i<11;$i++)
            {
                for($j=0;$j<11;$j++) 
                    {
                        if (($SkillsArray[$i] == $Text[$j]))
                            {
                                $Score = $Score+$Val[$j];


                            }
                    }

这需要第二个循环才能正常工作:)

于 2012-11-03T19:52:52.170 回答