2014-04-24 90 views
0

我是新來的PHP,我試圖創建一個程序,詢問用戶的元素數量,然後輸入這些元素,然後泡沫排序。如何從用戶獲取輸入並對該輸入進行冒泡排序?

<?php 
    function bubbleSort(array $arr) 
{ 
    $n = sizeof($arr); 
    for ($i = 1; $i < $n; $i++) { 
     $flag = false; 
     for ($j = $n - 1; $j >= $i; $j--) { 
      if($arr[$j-1] > $arr[$j]) { 
       $tmp = $arr[$j - 1]; 
       $arr[$j - 1] = $arr[$j]; 
       $arr[$j] = $tmp; 
       $flag = true; 
      } 
     } 
     if (!$flag) { 
      break; 
     } 
    } 

    return $arr; 
} 

// Example: 
$arr = array(255,1,'a',3,45,5); 
$result = bubbleSort($arr); 
print_r($result); 
?> 

我的代碼工作正常,如果我存儲陣列,我試圖做的是要求輸入用戶,而不是將其存儲在代碼。任何人都可以幫助我瞭解如何向用戶詢問需要多少元素,然後輸入這些元素?

回答

0

嘗試這個HTML代碼。

<!doctype html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Submit a Ticket</title> 
     <style type="text/css" media="screen"> 
      .hidden { 
       display: none; 
      } 
     </style> 
    </head> 

    <body> 
     <form name="form1" id="form1" method="post" action="<?php $_SERVER['PHP_SELF']?>"> 
      <h5>Bubble Sort</h5> 
      <h6>Fill the values</h6> 
      <label>Value 1<input type="text" name="bubble_values[]" id="bubble_values1" size="10" maxlength="10"></label><br> 
      <label>Value 2<input type="text" name="bubble_values[]" id="bubble_values2" size="10" maxlength="10"></label><br> 
      <label>Value 3<input type="text" name="bubble_values[]" id="bubble_values3" size="10" maxlength="10"></label><br> 
      <label>Value 4<input type="text" name="bubble_values[]" id="bubble_values4" size="10" maxlength="10"></label><br> 
      <label>Value 5<input type="text" name="bubble_values[]" id="bubble_values5" size="10" maxlength="10"></label><br> 
      <input type="submit" value="Sort it!" id="bt-submit"> 
     </form> 

     <h3>Result</h3> 
     <?php 
     function bubbleSort(array $arr) 
     { 
      $n = sizeof($arr); 
      for ($i = 1; $i < $n; $i++) { 
       $flag = false; 
       for ($j = $n - 1; $j >= $i; $j--) { 
        if($arr[$j-1] > $arr[$j]) { 
         $tmp = $arr[$j - 1]; 
         $arr[$j - 1] = $arr[$j]; 
         $arr[$j] = $tmp; 
         $flag = true; 
        } 
       } 
       if (!$flag) { 
        break; 
       } 
      } 

      return $arr; 
     } 

     // Example: 
     if (isset($_POST['bubble_values']) && !empty($_POST['bubble_values'])) { 
      echo '<pre>'; 
      echo 'Before sort: '; 
      print_r($_POST['bubble_values']); 
      echo '<br>--------------------<br>'; 
      echo 'After sort:' ; 
      print_r(bubbleSort($_POST['bubble_values'])); 
      echo '</pre>'; 
     } 
     ?> 
    </body> 
</html> 
0

如果要從命令行讀取用戶輸入,則需要從STDIN(標準輸入,當用戶在CLI中運行腳本時)讀取數據。這可能是這個問題的重複:PHP standard input?

但是,如果要顯示網頁並讓用戶從瀏覽器中將數據插入到腳本中,則需要創建表單並通過表單訪問表單信息$ _ POST。

0

這可能是一個'家庭作業'的問題,但我會採取刺。

我會提供給用戶一個。在頁面的文本中指出每個值應該用換行符分隔。然後,在$ _POST變量中,使用split('\ r \ n',$ _POST ['myvar'])來獲取數組,其中每行都是數組中的一個元素。

相關問題