gpt4 book ai didi

PHP 变量声明在 Laravel 5.4 中不起作用

转载 作者:行者123 更新时间:2023-11-29 06:59:47 24 4
gpt4 key购买 nike

我在 Laravel 5.4 Blade View 中有以下代码:

@php($strVal = $character->Strength)

@php($strMod = 0)

<?php
if ($strVal == 10 || 11) {
$strMod = 0;
} elseif ($strVal == 12 || 13) {
$strMod = 1;
} elseif ($strVal == 14) {
$strMod = 2;
} else {
$strMod = 2;
}


?>

它从 MySQL 表中获取数据。$strVal 是表中的一个 int。该代码创建一个名为 $strMod 的 var,并通过许多 if/elseif 语句来查看它等于什么。

在网页上显示如下:

<div class="huge charMod">+{{$strMod}}</div>

我的问题是,无论 strVar 等于什么,它都显示为“+0”。 strVar 工作正常,我可以从数据库中提取它并通过 {{ $strVal }} 显示它,但 strMod 拒绝采用 0 以外的值。

最佳答案

$strVal == 10 || 11总是返回 true

因为 PHP 中的比较不是这样进行的。 ==运算符的优先级高于 ||运算符,因此将首先执行。

这意味着$strVal == 10 || 11变成 false || 11 ..这是true .

我建议不要使用该代码:

$map = [
10 => 0,
11 => 0,
12 => 1,
13 => 1,
// you dont actually need 14, because default value is aready 2
];

$result = 2;

if (array_key_exists($strVal, $map)) {
$result = $map[$strVal];
}

$strVal = $result;

或者,如果您使用的是 PHP 7.0+,则实际上可以写为:

$map = [10 => 0, 11 => 0, 12 => 1, 13 => 1];
$strVal = $map[$strVal] ?? 2;

关于PHP 变量声明在 Laravel 5.4 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43968565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com