【问题标题】:mt_rand() returns unexpected outputmt_rand() 返回意外的输出
【发布时间】:2015-08-19 06:19:03
【问题描述】:

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

<?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,但结果仍然相同

【问题讨论】:

  • 鉴于提供的代码,两个选项都不会回显任何内容。
  • 你没有变量 a -> count($a) 它在哪里?你也不会返回你的价值观
  • 我认为这是问题所在.. $a 应该是 $RandomList
  • @Sparrow 不,它没有返回任何值
  • 你的代码isn't very DRY either...

标签: php string function return


【解决方案1】:

我试图简化你的功能:

你必须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

【讨论】:

  • else 声明是什么?
  • @Sparrow 如果您没有输入“两者”,您不必随机选择一个。所以你可以用公司名称和大小调用函数
  • @Rizier123 然后,也许,function bdad($size, $company = NULL) {
  • 而我所要做的就是在bdads 函数的末尾添加return $company[0] . $size;,将所有echo 替换为return,我不明白else 部分.
  • so..我可以删除if($company == 'nufa'){ echo bdads($zsize, 'nufa'); } if($company == 'gnr'){ echo bdads($zsize, 'gnr'); }并在底部添加else { return dads($size, $company); }吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2015-01-31
相关资源
最近更新 更多