PHP:如何更改依赖于另一个变量的变量? (新手的东西)

时间:2019-11-22 22:15:54

标签: php if-statement variables

我对网络编码还很陌生,想在php中进行一些改进,但是我已经陷于困境了:/

我想做的是像这样
西蒙(Simon)喜欢苹果
现在,我有了名称的输入表单,因此可以选择名称。看起来像是
$ name 喜欢苹果

<table>
    <tr>
        <td><input type="text" id="name1" name="name1"></td>
        <td><input type="submit" id="submit" name="submit" value="Apply"></td>
    </tr>
</table>
    </div>
    <div id="text">
    <?php
        if(isset($_REQUEST['submit'])) {
        $name1 = $_REQUEST['name1'];
        echo "$name1 likes apples.";
        }
    ?>
    </div>
</form>

到目前为止一切都很好。我输入的任何名称都将替换$ name。现在,我想做的是每当我输入代词(“我”,“你”,“他们”等)时,将“喜欢”更改为“喜欢”。现在,这里是我不知道该怎么办的地方。我当前的代码(无效)如下:

    <?php
        if(isset($_REQUEST['submit'])) {
        $name1 = $_REQUEST['name1'];
          if ($name1 = "I", "You") {
          $verb = "like";
          }
          else {
          $verb = "likes";
          }
        echo "$name1 $verb apples";
        }
    ?>

还有没有办法使它对资金不敏感?

2 个答案:

答案 0 :(得分:2)

您的代码中几乎没有问题。

单个=表示将我的变量设置为之后的任何字符串。因此,如果您想查看变量是否等于You之类的字符串,则必须使用==,它将返回true或false。

现在我们要说一下我的变量是You还是I,将第二个变量更改为like。那就是输出:

  if ($name1 == "I" || $name1 == "You") {
  $verb = "like";
  }
  else {
  $verb = "likes";
  }

所以现在它说如果$name1等于I OR(||$name1等于You,则将$verb更改为like。 / p>

我们将||用作OR,将&&用作AND。

如果需要回显变量和字符串,则应使用.作为变量和字符串之间的分隔。所以会是这样:

echo $name1 . $verb . "apples";

有点像+,但不是以数学的方式,只是表示加法。

更新

是的。有一种方法可以检查您的字符串是否区分大小写。您必须使用strcasecmp()

在您的代码中,它应该类似于:

  if (strcasecmp($name1,"I") == 0 || strcasecmp($name1,"You") == 0 ) {
  $verb = "like";
  }
  else {
  $verb = "likes";
  }

答案 1 :(得分:0)

不区分大小写的替换,$lut表定义了用什么替换。如果您不想随时间更改它,可以将其放在replaceMe函数中。

代码:

<?php

$lut = [
    'like' => [
        'I',
        'You',
        'They',
        'We',
    ],
    'likes' => [
        'she',
        'he',
        'it',
        'someone',
        'somebody',
    ],
];

function replaceMe(string $name, array $lut) : string
{
    foreach ($lut as $key => $value) {
        $nameLower = strtolower($name);
        $valueLowerArr = array_map(
            function($input) {
                return strtolower($input);
            },
            $value
        );
        if (in_array($nameLower, $valueLowerArr)) {
            return strtolower($key);
        }
    }
    return '';
}

$name = 'She';
echo "$name = " . replaceMe($name, $lut) . '<br>' . PHP_EOL;

$name = 'I';
echo "$name = " . replaceMe($name, $lut) . '<br>' . PHP_EOL;

$name = 'iT';
echo "$name = " . replaceMe($name, $lut) . '<br>' . PHP_EOL;

$name = 'TheY';
echo "$name = " . replaceMe($name, $lut) . '<br>' . PHP_EOL;

$name = 'nobody';
echo "$name = " . replaceMe($name, $lut) . '<br>' . PHP_EOL;

给出结果:

She = likes<br>
I = like<br>
iT = likes<br>
TheY = like<br>
nobody = <br>