优化ltrim和strpos

时间:2014-06-12 16:03:55

标签: php optimization explode strpos

我在常规的地方运行类似下面的脚本,我删除一个主角,然后在一个角色后删除其余的字符串,但是我注意到最近加载我的页面有一点拖累,我我想知道是否有人可以建议如何优化某些东西

$user_image ="";
$sqlimage ="SELECT * FROM `sys_users` WHERE `username`='sample'";
$dataimage = sql_fetch($sqlimage);

(这是我操纵数据的地方

$user_image=$dataimage[0]["image"];
$user_image = substr($user_image, 1);
list($user_image)= explode('|', $user_image);
if (sys_is_super_admin($_SESSION["username"])) $user_image = '/ext/icons/placeholder.gif';
$_SESSION["user_image"] = $user_image;

一个例子

1 个答案:

答案 0 :(得分:0)

首先,如果您是super_admin,我不需要使用您的数据库,我也可以阅读...

然后,也许您可​​以使用strpos查找第一个char限制的索引(示例中的管道)并将其用作substr的长度参数。

我可以给你这个片段:

function setSessionUserImage()
{
    if (sys_is_super_admin($_SESSION['username'])) {
        $_SESSION['user_image'] = '/ext/icons/placeholder.gif';
        return;
    }

    // $mysqli is your instance of mysql connection (from mysqli native PHP class)
    $stmt =  $mysqli->stmt_init();
    if ($stmt->prepare("SELECT * FROM `sys_users` WHERE `username`= ?")) {
        $stmt->bind_param('s', $_SESSION['username']);
        $stmt->execute();
        $stmt->bind_result($dataimage);
        $stmt->fetch();
        if (!empty($dataimage[0]) && !empty($dataimage[0]['image'])) {
            $user_image = $dataimage[0]['image'];
            // Here, add -1 for the strpos because you're removing the 1st char, shifting the string
            $_SESSION['user_image'] = substr($user_image, 1, strpos($user_image, '|') - 1);
        }
    }
    return;
}

当然,这段代码假定您从查询中获取数据的管道......并且您需要检查所有错误案例以明智地管理它们。