在php中将字符串转换为数组,输出它然后以升序和降序输出

时间:2016-10-14 23:10:56

标签: php arrays sorting

到目前为止,我已经设法将字符串转换为php中的数组,并将其与foreach和echo语句放在一起。但是当我尝试对它进行排序时,我得到了这样的错误:

  

警告:asort()期望参数1为数组。

在我正在研究的教科书中,它显示了一个这样的例子:

--privileged

我不太明白。我不想使用sort($array[,$compare]). 函数。我只想回应结果所以我来这里寻求帮助。我很感激任何建议。这是我的代码:

print_r

2 个答案:

答案 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>";
}
?>