2014-10-10 49 views
0

首先,我的技能水平充其量只是一個霍比特人 - 如果不是全部,我是一個新手。函數返回很多通知

我試圖製作一個函數,如果沒有給出參數/值,將返回一個單獨的<br />,否則將返回儘可能多的<br />標記,因爲值$num等於。

我試圖創建此函數:

A)瞭解如何創建功能

B)我討厭打字<br />

C)它的我想出了一個對我感興趣的功能。

所以,理想情況下,在我的代碼,如果getBrT()類型,它會返回一個單一<br />標籤,如果鍵入getBrT(1),它也將返回一個單一<br />標籤,但如果getBrT(5)類型,它將返回5個<br />標籤。

它不工作,因爲我希望當我輸入getBrT()。我是否總是要塞滿價值?在PHP的約束下,我試圖做什麼?

這裏的功能我已經建立了它:

function getBrT2($num){ 
    //if num equals 'nothing', 1 break - easier to call/type in code repeatedly 
    if ($num = ''){ 
     echo '<br /'; 
    }else{ 
     //if num equals 'something', breaks equal value 
     $i = 0; // initialize counter 
     while ($i < $num) { 
      echo '<br />'; // increment the counter 
      $i++;} 
     }   
    } 
+0

考慮使用適當的HTML和CSS,其中換行符被降到最小。那麼你不需要輸入'


< br/>'...... – 2014-10-10 13:47:25

+0

'if($ num ='')'不檢查相等性,它評估賦值的結果值,在這種情況下:賦值一個空字符串到'$ num',這是錯誤的。 '$ num',那麼**總是**是一個空字符串,並且你的函數會以'$ i <'''作爲條件_always_循環,這是沒有意義的。 – 2014-10-10 13:53:07

回答

3

爲了確保在沒有值傳遞給設置的默認值的函數這個作品。

function getBrT2($num = 1) {    // default value is 1 
    $num = (int) $num;     // cast num to integer 
    if ($num < 1) {      // if num is 0 or negative make it 1 
     $num = 1; 
    } 
    return str_repeat('<br/>', $num); // echo out as many <br/> as requested 
} 
echo getBrT2(1);  // prints out "<br/>" 
echo getBrT2(5);  // prints out "<br/><br/><br/><br/><br/>" 
echo getBrT2();  // prints out "<br/>" 
echo getBrT2('');  // prints out "<br/>" 
echo getBrT2('hello'); // prints out "<br/>" 

我對你的功能做了一些改進。

  • 除了默認值,我將傳遞給一個整數的值轉換爲一個整數,因爲這是我們需要處理的。任何不以數字開頭的字符串值將被轉換爲0
  • 然後我們檢查$num0還是負數。如果是這樣,我們使它1
  • 然後我們使用str_repeat()根據需要創建儘可能多的<br/>標籤。
  • 然後我們返回該字符串,以便它可以被回顯出來。
+0

我覺得函數應該返回值而不是print/echo – 2014-10-10 13:44:32

+0

我同意但是因爲這是他們如何使用它......當然,他們可以根據需要進行修改。我想說明的基本概念依然如此。 – 2014-10-10 13:45:08

+0

所以,如果我理解你如何重構函數,你可以通過在parens中加載默認值'0'來取消警告,如果它恰好等於'0'就會返回'one'break,但是如果它等於兩個或兩個以上時,它將返回儘可能多的br標籤,只要它等於給定的值,只要它是兩個或更多。我的理解是否正確。 – Chezshire 2014-10-10 13:47:25