到目前为止,我已经设法将字符串转换为php中的数组,并将其与foreach和echo语句放在一起。但是当我尝试对它进行排序时,我得到了这样的错误:
警告:asort()期望参数1为数组。
在我正在研究的教科书中,它显示了一个这样的例子:
--privileged
我不太明白。我不想使用sort($array[,$compare]).
函数。我只想回应结果所以我来这里寻求帮助。我很感激任何建议。这是我的代码:
print_r
答案 0 :(得分:0)
你必须在循环之前排序。 即。
asort($name);
foreach($name as $value){
echo $value."<br>";
}
$myarray = $names;
$name = explode(' ', $myarray);
arsort($name);
foreach($name as $value){
echo $value."<br>";
}
答案 1 :(得分:0)
首先,不需要在$name
执行任何操作:
$name = filter_input(INPUT_POST, 'name');
此处无需对$myarray
执行任何操作:
$myarray = filter_input(INPUT_POST, 'myarray');
或者在这里:
if($myarray === NULL){
$myarray = array();
}
由于你在这里覆盖了可能存在的任何内容:
$myarray = $names;
在这里你覆盖$name
:
$name = explode(' ', $myarray);
无需执行此操作,$myarray
自上次收到此值后未发生更改:
$myarray = $names;
应该对数组进行排序,而不是值,sort()
可能是你想要的:
$name = asort($myarray);
foreach ($name as $value){
echo "$value<br>";
}
然后反向排序:
$myarray = $names;
$name = arsort(explode(' ', $myarray));
foreach ($name as $value){
echo "$value<br>";
}
因此,对于完整的代码,有些简化和缩短:
<form action="list.php" method="post">
<input type="text" name="names">
<br>
<input type="submit" value="Submit">
<?php
// This is the only variable you are posting
// Also doing explode here
$names = explode(' ', filter_input(INPUT_POST, 'names'));
// Store a copy of the array here so that we have the original unchanged
$myarray = $names;
// Printing out the array as is
foreach ($myarray as $value)
{
// Double quotes to parse variables
echo "$value<br>";
}
// Sort the array
sort($myarray);
// Print it out sorted
foreach ($myarray as $value)
{
echo "$value<br>";
}
// Reverse the array
arsort($myarray);
// Print out again
foreach ($myarray as $value)
{
echo "$value<br>";
}
?>