如果不满足条件,如何更改变量

时间:2020-05-15 作者:pandglobal

如果搜索查询返回空,我希望有一种更好的方法来更改一个或多个变量的值,因为大多数情况下,如果搜索查询返回空,并且您调用了变量的位置,它将打印未定义的变量错误,特别是如果变量被称为数组键,如$get->user\\u login;它抛出对象未定义错误。以下是我的完整代码:

$keyuser = get_user_by( \'login\', $username );
if (!empty($keyuser)) {                         // only show this variables if the query returned is not empty
$byusername_dename = $keyuser->user_login;      // get the username searched by username method
$byusername_deemail = $keyuser->user_email;     // get the email searched by username method
$byusername_hisrole = $keyuser->roles[0];       // am searching user role based on if the user used the by username method
$byusername_id = $keyuser->ID;

}else{

$byusername_dename = \'\';                        // get the username searched by username method
$byusername_deemail = \'\';                       // get the email searched by username method
$byusername_hisrole = \'\';                       // am searching user role based on if the user used the by username method
$byusername_id = \'\';
}
因此,我逃避这些错误的方法是使用if语句在不为空的情况下调用变量,但如果为空,我会在else语句中调用它们,然后为它们分配一个空值。如果搜索查询为空,则不会显示此操作,并且不会显示未定义的错误,但如果搜索查询返回空,则我需要一种更好的方法将空值分配给变量,而无需在else语句中调用它们。如果我使用

}else{
return;
}
什么都不起作用,因为在其他地方调用的变量将无效或似乎不再存在。请我需要一个更好的方法和更简单的方法来做这件事。

1 个回复
最合适的回答,由SO网友:Bob 整理而成

如果用户不存在,则模板应返回一些信息,说明用户不存在,而不是尝试回显其数据,例如:

<?php $keyuser = get_user_by(\'login\', $username); ?>
<?php if(empty($keyuser)): ?>
    <p>That username does not exist, please check for typos or try a different search cryteria.</p>
<?php else: ?>
    <table>
        <tr>
            <th>User ID</th>
            <th>Username</th>
            <th>Email Address</th>
            <th>Roles</th>
        </tr>
        <tr>
            <td><?php echo $keyuser->ID; ?></td>
            <td><?php echo $keyuser->user_login; ?></td>
            <td><?php echo $keyuser->user_email; ?></td>
            <td><?php echo $keyuser->roles[0]; ?></td>
        </tr>
    </table>
<?php endif; ?>
如果这不可行,并且需要将变量设置为空白字符串,那么可以使用ternary if statement 如果你觉得这样看起来更整洁/减少打字

$keyuser = get_user_by(\'login\', $username);
$byusername_dename = $keyuser->user_login ?: \'\';
$byusername_deemail = $keyuser->user_email ?: \'\';
$byusername_hisrole = $keyuser->roles[0] ?: \'\';
$byusername_id = $keyuser->ID ?: \'\';