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];


                            }
                    }

これには、適切に機能するために2番目のループが必要でした:)

于 2012-11-03T19:52:52.170 に答える