到目前为止,我已经设法在php中将字符串转换为数组,并使用foreach和echo语句将其放入。但是,当我尝试对其进行排序时,会出现如下错误:
警告:asort()期望参数1为数组。
在我正在研究的教科书中,它显示了这样的示例:
sort($array[,$compare]).
我不太明白。我不想使用该print_r
功能。我只想回显结果,所以我来这里寻求帮助。我感谢任何建议。这是我的代码:
<form action="list.php" method="post">
<input type="text" name="names">
<br>
<input type="submit" value="Submit">
<?php
if(!isset($name)) {$name = '';}
if(!isset($names)) {$names = '';}
if(!isset($value)) {$value = '';}
if(!isset($myarray)) {$myarray = '';}
$name = filter_input(INPUT_POST, 'name');
$names = filter_input(INPUT_POST, 'names');
$myarray = filter_input(INPUT_POST, 'myarray');
if($myarray === NULL){
$myarray = array();
}
$myarray = $names;
$name = explode(' ', $myarray);
foreach($name as $value){
echo ($value)."<br>";
}
$myarray = $names;
$name = explode(' ', $myarray);
foreach($name as $value){
echo asort($value)."<br>";
}
$myarray = $names;
$name = explode(' ', $myarray);
foreach($name as $value){
echo arsort($value)."<br>";
}
?>
首先,$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>";
}
?>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句