2016-10-14 19 views
0

これまでのところ、文字列をPHPで配列に変換してforeachとecho文で置きました。しかし、ソートしようとすると、次のようなエラーが発生します。文字列をphpで配列に変換して出力し、昇順と降順で出力します

警告: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>"; 
} 
?> 
+0

あなたは 'ASORT()'配列、ではないにしてい値(配列要素)! – arkascha

答えて

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()はあなたがここに欲しいものpropablyです:

$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>"; 
} 
?> 
+0

私は自分の選択肢を調べる前に最後のコメントを投稿するのが面倒だった。それはエラーを引き起こしていた私のタイプミスでした。あなたが提案したコードはうまくいきました。ありがとうございました。 – swydell

0

ループの前にソートする必要があります。 I.

asort($name); 
foreach($name as $value){ 
    echo $value."<br>"; 
} 
$myarray = $names; 
$name = explode(' ', $myarray); 
arsort($name); 
foreach($name as $value){ 
    echo $value."<br>"; 
} 
+0

私はこの問題を投稿してうれしく思います。私はPHPで苦労している誰かがこれを見て助けてくれることを願っています。 – swydell

関連する問題