dede 判断不为空

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文

核心方法

在 PHP 中,判断不为空最常用、最准确的方法是使用 empty() 函数的否定形式 !empty()

dede 判断不为空
(图片来源网络,侵删)

为什么推荐 !empty() empty() 函数会检查一个变量是否为“空”,在 PHP 中,以下值被认为是“空”的:

  • (空字符串)
  • 0 (作为整数的 0)
  • 0 (作为浮点数的 0)
  • "0" (作为字符串的 "0")
  • NULL
  • FALSE
  • array() (空数组)
  • var $var; (一个声明了但未赋值的变量)

使用 !empty() 可以非常全面地排除以上所有情况,确保变量不仅存在,而且有实质性的内容。


在模板文件中 (.htm) 判断

这是最常见的情况,比如在列表页、内容页或自定义循环中判断一个字段是否有值。

判断普通变量或字段

使用 if

语法:

dede 判断不为空
(图片来源网络,侵删)
{if !empty($变量名)}
    <!-- 如果变量不为空,则显示这里的代码 -->
    <div>这个字段有内容:[field:变量名/]</div>
{/if}

示例 1:在文章列表页判断 litpic (缩略图) 字段

{dede:arclist typeid='1' titlelen='30'}
    <li>
        <!-- 如果缩略图不为空,则显示缩略图 -->
        {if !empty([field:litpic/])}
            <a href="[field:arcurl/]"><img src="[field:litpic/]" alt="[field:title/]" /></a>
        {/if}
        <!-- 总是显示标题 -->
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
{/dede:arclist}

示例 2:在文章内容页判断 keywords (关键词) 字段

{if !empty($keywords)}
    <div class="keywords">
        <strong>关键词:</strong>
        {$keywords}
    </div>
{/if}

判断数组中的元素

当你使用 php 标签引入自定义数据时,可能会遇到数组。

语法:

{if !empty($数组名['键名'])}
    <!-- 如果数组元素不为空,则显示 -->
    <div>数组内容:{$数组名['键名']}</div>
{/if}

示例: 假设你通过 {dede:php} 标签获取了一个 $user 数组。

{dede:php}
    $user = array(
        'name' => '张三',
        'bio'  => '' // 这个字段是空的
    );
{/dede:php}
{if !empty($user['name'])}
    <p>用户名:{$user['name']}</p> <!-- 这行会显示 -->
{/if}
{if !empty($user['bio'])}
    <p>个人简介:{$user['bio']}</p> <!-- 这行不会显示 -->
{/if}

在 PHP 脚本文件中 (.php) 判断

当你需要修改 DedeCMS 的核心文件或编写自定义插件时,在 PHP 代码中进行判断。

判断变量

直接使用 if (!empty($var)) 语法。

示例:修改 arclist.lib.php 或自定义函数

// 假设这是从数据库获取到的文章数据
$row['typename'] = ''; // 假设这个字段为空
$row['pubdate'] = '2025-10-27'; // 这个字段有值
if (!empty($row['typename'])) {
    echo "栏目名称:" . $row['typename'];
} else {
    echo "该文章没有指定栏目。";
}
echo "<br>";
if (!empty($row['pubdate'])) {
    echo "发布时间:" . $row['pubdate'];
}

输出:

该文章没有指定栏目。
发布时间:2025-10-27

判断 POST/GET 提交的数据

在处理表单提交时,判断用户是否输入了内容。

示例:一个自定义的表单处理脚本

<?php
require_once(dirname(__FILE__)."/../include/common.inc.php");
// 获取表单提交的数据
$username = isset($_POST['username']) ? $_POST['username'] : '';
$email = isset($_POST['email']) ? $_POST['email'] : '';
// 判断用户名和邮箱是否为空
if (!empty($username) && !empty($email)) {
    // 数据不为空,执行入库或其他操作
    $msg = "提交成功!用户名:{$username}, 邮箱:{$email}";
} else {
    // 数据为空,提示错误
    $msg = "用户名和邮箱都不能为空!";
}
// 显示提示信息
echo $msg;
?>

其他方法及其区别

虽然 !empty() 是首选,但了解其他方法有助于你应对不同情况。

方法 描述 适用场景 注意事项
if ($var) 如果变量转换为布尔值为 true,则为真。 快速判断变量是否有“意义”的值。 if (0)if ('0')if (false)if (null) 都会为假,对于 '0' 这样的字符串,它和 !empty() 行为一致,但对于数字 0 则不同。
if ($var != '') 判断变量是否不等于空字符串。 只需要判断变量不是空字符串的场景。 无法判断 NULL0false 等情况。if (0 != '') 结果为 true,可能不符合预期。
isset($var) 判断变量是否已声明并且 NULL 判断一个变量是否存在,即使它的值是 0 或 。 是否为空isset($var)$var = ''$var = 0 时返回 true,如果你需要判断“有内容”,!empty() 更合适。
strlen($var) > 0 判断字符串长度是否大于 0。 专门用于判断字符串变量。 只适用于字符串类型,如果变量是数字 0 或数组,会出错或产生非预期结果。

  • 绝大多数情况下,请使用 !empty(),它最安全、最全面,能处理字符串、数字、布尔值、NULL 和空数组。
  • 如果你只想确认一个变量已经被定义了(不管值是什么),用 isset()
  • 如果你明确知道变量是字符串,并且只想判断它是不是空字符串,可以用 $var != ''

希望这个详细的解释能帮助你更好地在 DedeCMS 中进行判断!

-- 展开阅读全文 --
头像
织梦地区联动默认值如何设置?
« 上一篇 04-24
dede留言插件哪里下载?
下一篇 » 04-24

相关文章

取消
微信二维码
支付宝二维码