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

为什么推荐 !empty()?
empty() 函数会检查一个变量是否为“空”,在 PHP 中,以下值被认为是“空”的:
- (空字符串)
0(作为整数的 0)0(作为浮点数的 0)"0"(作为字符串的 "0")NULLFALSEarray()(空数组)var $var;(一个声明了但未赋值的变量)
使用 !empty() 可以非常全面地排除以上所有情况,确保变量不仅存在,而且有实质性的内容。
在模板文件中 (.htm) 判断
这是最常见的情况,比如在列表页、内容页或自定义循环中判断一个字段是否有值。
判断普通变量或字段
使用 语法: 示例 1:在文章列表页判断 示例 2:在文章内容页判断 当你使用 语法: 示例:
假设你通过 当你需要修改 DedeCMS 的核心文件或编写自定义插件时,在 PHP 代码中进行判断。 直接使用 示例:修改 输出: 在处理表单提交时,判断用户是否输入了内容。 示例:一个自定义的表单处理脚本 虽然 希望这个详细的解释能帮助你更好地在 DedeCMS 中进行判断!if

{if !empty($变量名)}
<!-- 如果变量不为空,则显示这里的代码 -->
<div>这个字段有内容:[field:变量名/]</div>
{/if}
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}
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) 判断判断变量
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 != '')判断变量是否不等于空字符串。
只需要判断变量不是空字符串的场景。
无法判断
NULL、0、false 等情况。if (0 != '') 结果为 true,可能不符合预期。
isset($var)判断变量是否已声明并且
NULL。判断一个变量是否存在,即使它的值是
0 或 。是否为空。
isset($var) 在 $var = '' 或 $var = 0 时返回 true,如果你需要判断“有内容”,!empty() 更合适。
strlen($var) > 0判断字符串长度是否大于 0。
专门用于判断字符串变量。
只适用于字符串类型,如果变量是数字
0 或数组,会出错或产生非预期结果。
!empty(),它最安全、最全面,能处理字符串、数字、布尔值、NULL 和空数组。isset()。$var != ''。
