2016-07-28 12 views
0

Ich versuche, eine App zu machen, die mir erlauben zu ordnen und zu sortieren Dezimalzahl nach seinen Wert, aber array_flip Funktion kann nicht String und Dezimalzahl Flip,wie Flip STRING und Dezimal/Float-Werte in Array PHP Flip?

<?php 

$myarray = array(1,0.334,-0.334,-1); 

//create a copy and sort 
$myarray_copy = $myarray; 
rsort($myarray_copy); 
//reverses key and values 
$myarray_copy = array_flip($myarray_copy); 
//create result by using keys from sorted values + 1 
foreach($myarray as $val) 
    $myarray2[] = ($myarray_copy[$val]+1); 
//print final array 
print_r($myarray2); 
print_r($myarray); 


?> 

und es gibt eine Warnung über array_flip

Warnung: array_flip() [function.array-flip]: Kann nur STRING- und INTEGER-Werte umkehren! in C: \ xampp \ htdocs \ ranking.php on line 9

, wissen Sie, wie man mit diesen umgehen? Gibt es eine Lösung?

+0

Sie müssen die Werte des Arrays in einen String konvertieren, um es so einfach wie möglich zu machen. Zum Beispiel können Sie "i" mit jedem Wert verketten. Dann sind die Werte gültige Indexwerte für die Umkehrung. – kainaw

+0

Sie können die Array-Werte als 'array (" 1 "," 0.334 "," -0.334 "," - 1 ") deklarieren;' aber rsort ($ myarray_copy, SORT_NUMERIC) ', um numerische Sortierung zu erzwingen. – apokryfos

+0

Warum möchten Sie das Array umdrehen? Wenn Sie die Schlüssel/Wert-Beziehung pflegen und nach Wert sortieren müssen, verwenden Sie 'arsort' oder' asort'. Seien Sie klarer über Ihr beabsichtigtes Ziel. – Walf

Antwort

0

Nach Art verwenden array_walk jedes Element zur Umwandlung von Dezimalzahlen in String wie ---

function test_alter(&$item1, $key) 
{ 
    $item1 = (string)$item1; 
} 
array_walk($fruits, 'test_alter', 'fruit'); 

Und dann kippen. Hoffe das hilft.

+0

Wie konvertiert man dezimal in ganze Zahlen? –