繁体   English   中英

函数php变量未知

[英]Function php variable unknown

function scale($src) {
    $max = 350;
    if (!isset($max, $src))
        return;
    $src = str_replace(" ", "%20", $src[1]);
    $info = @getimagesize($src);
    $sw = $info[0];
    $sh = $info[1];
    $addclass = false;
    $max_em = 0.06 * $max;
    if ($max < max($sw, $sh)) {
        if ($sw > $sh)
            $new = array($max_em . "em", "auto");
        if ($sw < $sh)
            $new = array("auto", $max_em . "em");
        $addclass = true;
    } else
        $new = array("auto", "auto");
    $id = mt_rand(0000, 9999);
    if ($new[0] == "auto" && $new[1] == "auto")
        $img = "<img src=\"" . $src . "\" border=\"0\" alt=\"\" />";
    else
        $img = "<img id=\"r" . $id . "\" border=\"0\" alt=\"\" src=\"" . $src . "\" " . ($addclass ? "class=\"resized\"" : "") . " style=\"width:" . $new[0] . ";height:" . $new[1] . ";\" />";
    return $img;
}

我具有此功能来调整图像大小。 它在图像较大时起作用,但是例如当它们为600x600时,我得到注意:未定义的变量:新行

if ($new[0] == "auto" && $new[1] == "auto")

$img = "<img id=\"r" . $id . "\" border=\"0\" alt=\"\" src=\"" . $src . "\" " . ($addclass ? "class=\"resized\"" : "") . " style=\"width:" . $new[0] . ";height:" . $new[1] . ";\" />";

对于这种情况,否则$ new应该是$new = array("auto", "auto"); ,但无法识别。

看下面的部分,就很清楚了:

if ($max < max($sw, $sh)) {
        if ($sw > $sh)
            $new = array($max_em . "em", "auto");
        if ($sw < $sh)
            $new = array("auto", $max_em . "em");
        $addclass = true;
    } else
        $new = array("auto", "auto");

将其转换为值,您将看到..

if ($max < max($sw, $sh)) {
        if (600 > 600)
            $new = array($max_em . "em", "auto");
        if (600 < 600)
            $new = array("auto", $max_em . "em");
        $addclass = true;
        // None of the above ifs meet the case of 600x600 !!!!!
        // ----------------------------------------------------
    } else
        $new = array("auto", "auto");

$ new不会被初始化。 您需要在代码顶部添加新代码。 您所有的if语句都不会满足true,并且$ new永远不会分配变量。 注意:使用变量之前,请确保已初始化变量。

function scale($src) {
    $max = 350;
    if (!isset($max, $src))
        return;
    $src = str_replace(" ", "%20", $src[1]);
    $info = @getimagesize($src);
    $sw = $info[0];
    $sh = $info[1];
    $addclass = false;
    $max_em = 0.06 * $max;
    $new = array('auto', 'auto'); //Initialized variable per (Catalin Deaconescu)

    if ($max < max($sw, $sh)) {
        if ($sw > $sh)
            $new = array($max_em . "em", "auto");
        if ($sw < $sh)
            $new = array("auto", $max_em . "em");
        $addclass = true;
    } else {
        $new = array("auto", "auto");
        $id = mt_rand(0000, 9999);
    }

    if ($new[0] == "auto" && $new[1] == "auto")
        $img = "<img src=\"" . $src . "\" border=\"0\" alt=\"\" />";
    else
        $img = "<img id=\"r" . $id . "\" border=\"0\" alt=\"\" src=\"" . $src . "\" " . ($addclass ? "class=\"resized\"" : "") . " style=\"width:" . $new[0] . ";height:" . $new[1] . ";\" />";
    return $img;

}

这里的问题:

if ($sw > $sh)
    $new = array($max_em . "em", "auto");
    if ($sw < $sh)
    $new = array("auto", $max_em . "em");

$ sw == $ sh时您不匹配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM