确定变量是否已设置且不为NULL
这是基本问题 `a class="custom-btn custom-btn--small custom-btn--style-4" 这是基本问题 `<li class="li-btn">a class="custom-btn custom-btn--small custom-btn--style-4" <? if ($user == ""){ echo "href=\"xxx://www.example.com/login.php\">Member Login</a>>"; } elseif ($user != ""){ echo "href=\"xxx://www.example.com/mycp.php\">$user</a>>"; } ?></li>`: 工作正常,但抛出一个未定义的数组键:输出: `<li class="li-btn"><a class="custom-btn custom-btn--small custom-btn--style-4" href="xxx://www.example.com/login.php">Member Login</a>></li>` 但是,如果我使用: `if(isset($user) && $user == ''){ echo "href=\"xxx://www.example.com/login.php\">Member Login</a>>";` 整个页面乱了,输出是: <li class="li-btn"> <a class="custom-btn custom-btn--small custom-btn--style-4" </li> 除了很长的空白和格式混乱的页面之外,没有任何输出。 不知道为什么,也无法弄清楚为什么 if ($user == ""){ 有效,为什么不行 if(isset($user) && $user == ''){ 感谢任何想法 使用empty($user) 对未设置值和空值进行更安全、更简洁的检查 `<li class="li-btn">a class="custom-btn custom-btn--small custom-btn--style-4" <? if (empty($user)) { echo "href=\"xxx://www.example.com/login.php\">Member Login</a>>"; } } else { echo "href=\"xxx://www.example.com/mycp.php\">$user</a>>"; } ?></li>`:
我今天在我的代码库中看到了这个: if (isset($purchase_data['buyer_tracking_address_id']) && $purchase_data['buyer_tracking_address_id']) { // 做某事 } 为什么要检查两者
在某些情况下,我可以使用@字符而不是使用较长的isset()函数吗? 如果没有,为什么不呢? 我喜欢用这个,因为在很多情况下我可以节省几个引号,括号......
在从可能为空的查询结果填充许多 HTML 表单字段时,如果变量为空,则回显默认值 [重复]
我有一个html表单,用于编辑mysql表中的记录。 在编辑的情况下,我使用查询返回的记录的当前值预填充表单,如下所示: 我有一个 html 表单,用于编辑 mysql 表中的记录。 在编辑的情况下,我使用查询返回的记录的当前值预填充表单,如下所示: <INPUT TYPE="text" NAME="SITENAME" SIZE=35 VALUE="<?php echo $customer['sitename']; ?>"> 我想使用相同的表单来创建新记录,但是当然不会为 sql 查询数组分配任何值,因此该表单将不起作用。 我知道我可以为每个输入或单个输入添加 IF 或 ISSET,但随后必须在没有每个 echo 语句的情况下复制表单代码。两者看起来都很麻烦。 有没有更好的方法来使用相同的表单代码? 空合并运算符非常适合这种情况。它基本上是 if(isset()): 的简写 你正在考虑做这样的事情: if (isset($customer['sitename'])) { echo $customer['sitename']; } else { echo $someDefaultValue; } 这可以缩短为: echo $customer['sitename'] ?? $someDefaultValue; 既然你在默认情况下什么都不想要,你可以只使用 null: echo $customer['sitename'] ?? null; 即,如果有现有的站点名称,则输出它,否则什么也不输出。请注意,如果您所做的只是 echo,则可以使用简短的打开语法,因此您的代码将变为: <INPUT TYPE="text" NAME="SITENAME" SIZE=35 VALUE="<?= $customer['sitename'] ?? null; ?>"> 我认为最紧凑的方式是: value="<?php echo $customer['sitename'] ?? ''; ?>" 此外,您应该清理该值,它可能包含有害字符,例如": value="<?php echo htmlspecialchars($customer['sitename'] ?? ''); ?>"
isset 可以与 CodeIgniter 的 get 方法一起使用吗?
使用 CodeIgniter 我试图查看 URL 中的“ID”是否是“uID”(用户 ID)或“sID”(系统 ID)。 我正在使用的代码是: if(isset($this->input->get('uID'))) { $getID = $this-inp...
我正在检查是否使用 isset 设置了特定值。我想退出脚本并显示一条错误消息,例如“未找到名称,请输入有效名称”。目前我正在这样检查...
是否有一种简洁的方法来检查变量是否已设置,然后回显它而不重复相同的变量名称? 而不是这个: 变量)){ 回声' 是否有一种简洁的方法来检查变量是否已设置,然后回显它而不重复相同的变量名称? 而不是这个: <?php if(!empty($this->variable)) { echo '<a href="', $this->variable, '">Link</a>'; } ?> 我正在思考这个 C 风格伪代码中的一些内容: <?php echo if(!empty($this->variable, '<a href="', %s, '">Link</a>')); ?> PHP 有 sprintf,但它并没有完全达到我的期望。如果我当然可以用它制作一个方法/函数,但肯定有一种方法可以“本地”完成它? 更新: 三元运算也会重复$this->variable部分,如果我理解的话? echo (!empty($this->variable) ? '<a href="',$this->variable,'">Link</a> : "nothing"); 最接近您要查找的内容的是使用三元运算符的缩写形式(自 PHP5.3 起可用) echo $a ?: "not set"; // will print $a if $a evaluates to `true` or "not set" if not 但这会触发“未定义变量”通知。您可以使用 @ 明显抑制它 echo @$a ?: "not set"; 仍然不是最优雅/干净的解决方案。 因此,您可以期望的最干净的代码是 echo isset($a) ? $a: ''; 更新: PHP 7 引入了一个新功能:空合并运算符 这是来自 php.net 的示例。 <?php // Fetches the value of $_GET['user'] and returns 'nobody' // if it does not exist. $username = $_GET['user'] ?? 'nobody'; // This is equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // Coalescing can be chained: this will return the first // defined value out of $_GET['user'], $_POST['user'], and // 'nobody'. $username = $_GET['user'] ?? $_POST['user'] ?? 'nobody'; ?> 对于那些还没有使用 PHP7 的人,这是我原来的答案... 我用一个小函数来实现这个: function ifset(&$var, $else = '') { return isset($var) && $var ? $var : $else; } 示例: $a = 'potato'; echo ifset($a); // outputs 'potato' echo ifset($a, 'carrot'); // outputs 'potato' echo ifset($b); // outputs nothing echo ifset($b, 'carrot'); // outputs 'carrot' 警告:正如 Inigo 在下面的评论中指出的那样,使用此函数的一个不良副作用是它可以修改您正在检查的对象/数组。例如: $fruits = new stdClass; $fruits->lemon = 'sour'; echo ifset($fruits->peach); var_dump($fruits); 将输出: (object) array( 'lemon' => 'sour', 'peach' => NULL, ) PHP 没有内置函数。 但如果您使用 Laravel,您可以在刀片模板中使用一个方便的快捷方式: <div>{{ $myvar ?? 'N/A' }}</div> 其中$myvar存在时显示,否则设置使用默认值(此处定义为'N/A') 像这样使用 php 的 isset 函数: <?php echo $result = isset($this->variable) ? $this->variable : "variable not set"; ?> 我认为这会有所帮助。
我正在尝试运行这个 PHP 脚本以从 Web 服务获取一些数据,它完美地工作了 50~120 次,但随后它抛出了这个异常。 这是我的控制器: /* $dataArray = 数组( * ...
以下是否有简写: $a??=[]; # 注意:$a ??= [] 等价于 $a = isset($a) ? $一:[] $b ??= []; #... $z??=[]; 一种可能的解决方案是: foreach (数组("a", &q...
我想检查 URL 中是否存在 app 参数,但没有值。 例子: my_url.php?app 我尝试了isset()和empty(),但不起作用。我以前见过它是怎么做的,但我忘记了。
在 PHP 中,是否可以复制 isset() 抑制其参数中未定义变量的警告的方式?
使用 isset() 函数,您可以将未定义的变量传递给其参数,而不会收到警告。我想知道,是否可以以某种方式复制此功能? 例如,我三...
PHP 中的 'isset()' 和 '!empty()' 有什么区别?
我不明白isset()和!empty()之间的区别。 因为如果设置了一个变量,那不就等于不为空了吗?
PHP Cookie 在 Brave 中实际删除之前并不存在
首先,我使用 PHP 设置一个新的 cookie 并检查它是否存在。之后,我通过将到期日期设置为过去来删除它,并再次检查它是否成功。
从 php 7 更新到 php 8 后代码无法工作[已关闭]
所以我多年来一直致力于这个托管游戏服务器的项目,这个按钮应该生成一个 ID 号并从文本框中获取值,然后将它们保存在 .json 数据库中。 最近我...
在PHP中,如何测试环境变量是否设置?我想要这样的行为: // 假设 MYVAR 尚未定义。 伊塞特(MYVAR); // 返回假 putenv("MYVAR=foobar"); 伊塞特(MYV...
我在尝试构建一个非常简单的库存管理系统时遇到了一些麻烦。 我正在做的是在 html 表中显示数据库中的数据,并在每一行中创建两个按钮:一个用于编辑...
PHP - 变量已设置但使用 isset 返回 false?
PHP 中非常基本的问题 - 我已将变量设置为 null,为什么结果为 false? $a = 空; var_dump(isset($a)); // 错误的 如果 isset 不是 t,我如何检查变量是否已设置...
我收到以下错误消息: 致命错误:无法对表达式的结果使用 isset()(您可以使用“null !== expression”代替) 它引用的代码是这样的 $数据['...
我有一个表,使用 foreach() 显示数组中的每个对象。我想要一个搜索栏,可以过滤表格,仅显示一个对象及其信息。我...
使用 if(isset($_POST['submit'])) 在脚本打开时不显示回显不起作用
我的 if(isset($_POST['submit'])) 代码有一点问题。我想要的是一些回声和一个表格,当脚本打开时不会出现,但我确实希望它在提交按钮时显示...