2015-06-04 38 views
0

我正在使用我的網站的廣告系統,並且遇到了問題。現在mt_rand()返回意外輸出

<?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,但還是同樣的結果
+0

鑑於提供的代碼,兩個選項將回聲什麼都沒有。 –

+0

你沒有變量a - >'count($ a)'它在哪裏?你也不**返回**你的價值 – Rizier123

+0

它正在返回... – Sparrow

回答

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 
+0

那是什麼'else'語句? – Sparrow

+0

@斯巴羅如果你沒有輸入「兩個」你不必隨便一個。所以你可以用公司名稱和大小調用函數 – Rizier123

+0

@ Rizier123然後,也許,'功能bdad($大小,$公司= NULL){' – splash58