比较两个数组后添加到整数变量

时间:2012-11-03 11:50:45

标签: php arrays loops listbox

我对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 />

2 个答案:

答案 0 :(得分:0)

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


                            }
                    }

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

答案 1 :(得分:0)

数组$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