mt_rand() returns 意外输出

mt_rand() returns unexpected output

我正在使用我网站的广告系统,但遇到了问题。

<?php

function bdads($size, $company) {
if($company == 'nufa') {
    if ($size == '300'){
        echo 'n300';
    }

    if ($size == '160'){
        echo 'n160';
    }
    if ($size == '728'){
        echo 'n728';
    }

    if ($size == '700'){
        echo 'n700';
    }
}

if($company == 'gnr') {
    if ($size == '300'){
        echo 'g300';
    }

    if ($size == '160'){
        echo 'g160';
    }

    if ($size == '728'){
        echo 'g728';
    }

    if ($size == '700'){
        echo 'g700';
    }
}

}

function bdad($size, $company){
$zsize = $size;
if($company == 'nufa'){
    echo bdads($zsize, 'nufa');
}
if($company == 'gnr'){
    echo bdads($zsize, 'gnr');
}
if($company == 'both'){
    $RandomList = [ bdads($zsize, 'gnr'),  bdads($zsize, 'nufa')];
    echo $RandomList[mt_rand(0, count($RandomList) - 1)];
}
}
?>

现在,一切似乎都很好.. 例如,

<?php echo bdad(728, 'gnr'); ?>

返回 g728(如预期)

<?php echo bdad(300, 'nufa'); ?>

返回 n300(如预期)

但所有的麻烦都在于生成随机内容。

<?php echo bdad(300, 'both'); ?>

返回 g300n300 我想让它随机选择g300或n300。

编辑:

我试着稍微简化了你的功能:

您必须 return your values, otherwise your functions will return NULL by default. Also you can access a string like an array, so I used $company[0] to get the first letter of the company, which you then can concatenate 尺寸。

<?php

    function bdads($size, $company) {   
        return $company[0] . $size;
    }

    function bdad($size, $company){

        if($company == "both") {
            $RandomList = [bdads($size, "gnr"),  bdads($size, "nufa")];
            return $RandomList[mt_rand(0, count($RandomList) - 1)];
        } else {
            return dads($size, $company);
        }

    }

    echo bdad(300, "both");

?>

输出:

n300 //Or g300