[英]How to get an input from a user and bubble sort that input?
我是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);
?>
如果我存儲數組,我的代碼可以正常工作。我想做的是詢問用戶輸入,而不是將其存儲在代碼中。 誰能幫助我,問用戶需要多少元素然后輸入這些元素?
如果要從命令行讀取用戶輸入,則需要從STDIN讀取(用戶在CLI中運行腳本時的標准輸入)。 這可能是以下問題的重復: PHP標准輸入?
但是,如果要顯示網頁並讓用戶從其瀏覽器將數據插入腳本,則需要創建一個表單,然后通過$ _POST訪問該表單信息。
試試這個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>
這可能是一個“家庭作業”問題,但我會采取行動。
我會為用戶提供一個。 在頁面的文本中指出每個值都應由換行符分隔。 然后,在$ _POST變量中,使用split('\\ r \\ n',$ _POST ['myvar'])獲得一個數組,其中每一行都是數組中的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.