2014-04-24 50 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'])来获取数组,其中每行都是数组中的一个元素。

相关问题