0

所以我认为切换可能不是最合适的方法,我还能怎么做呢?基本上我想将字符串分解为单个字母,然后将每个字母的值传递给一个新变量。到目前为止我所拥有的(大部分字母都被删除了,所以你可以得到要点,但我没有填满屏幕):

$word = $_POST["word"];
$word_value = 0;
$word_array = str_split($word);

switch ($word_array){
    case "a":
    case "t":
        $word_value++;
        break;
    case "g":
    case "d":
        $word_value +2;
        break;
 }

提前致谢!

4

3 回答 3

1

假设值是常数,创建第二个数组。该数组保存每个字母要增加的数量。现在您不需要 switch 语句,您只需索引到第二个数组。

例如:

$letter_value["a"] = $letter_value["t"] = 1;
$letter_value["g"] = $letter_value["d"] = 2;

foreach ($word_array as $letter){
   $word_value += $letter_value[$letter];
}
于 2013-07-28T23:45:36.927 回答
1

您将开关插入到 foreach 循环中,您可以在其中分析数组的每个元素。 $word_array是你的数组并且$word是数组的一个元素。

$word = $_POST["word"];
$word_value = 0;
$word_array = str_split($word);

foreach($word_array as $letter){
    switch ($letter){
        case "a":
        case "t":
            $word_value++;
            break;
        case "g":
        case "d":
            $word_value+=2;
            break;
    }
}
于 2013-07-28T23:27:09.220 回答
1

尝试类似:

class Word{
  private $pn = 'word'; private $wv = 0;
  public function __construct($postName){
    $this->pn = $postName;
  }
  public function change_postName($postName){
    $this->pn = $postName;
  }
  public function value(){
    $wA = str_split($_POST[$this->pn]);
    foreach($wA as $w){
      switch($w){
        case 'a':
        case 't':
          $this->wv++;
          return $this->wv;
        case 'g':
        case 'd':
        $this->wv+=2;
          return $this->wv;
      }
    }
  }
}
$wrd = new Word('word'); $word_value1 = $wrd->value();

现在您可以更改获取信息的位置,例如:

$wrd->change_postName('other'); $word_value2 = $wrd->value();

并将您的单词值重置为零,例如:

$nwrd = new Word('word');
于 2013-07-28T23:31:22.297 回答