mt_rand()返回意外输出

时间:2015-06-04 14:52:09

标签: php string function return

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

<?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。

编辑:

  • $a更改为$RandomList,但结果仍然相同

1 个答案:

答案 0 :(得分:3)

我试图简化你的功能:

您必须return您的值,否则您的函数默认会返回NULL。另外,您可以访问string like an array,因此我使用$company[0]来获取公司的第一个字母,然后您可以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