2016-07-28 201 views
0

我试图做一个应用程序,让我按照它的价值排名和排序十进制数,但array_flip功能不能翻转字符串和十进制数,如何在数组PHP中翻转STRING和decimal/float值?

<?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); 


?> 

,并有一个关于array_flip

警告

Warning:array_flip()[function.array-flip]:只能翻转STRING和INTEGER值!在C:\ xampp \ htdocs \ ranking.php上线9

,你们知道如何处理这些?有没有解决方法?

+0

您需要将数组的值转换为字符串以尽可能简单。例如,您可以将“i”连接到每个值。然后,这些值将是翻盖的有效索引值。 – kainaw

+0

您可以将数组值声明为array(“1”,“0.334”,“ - 0.334”,“ - 1”);'但是执行rsort($ myarray_copy,SORT_NUMERIC)'强制进行数字排序。 – apokryfos

+0

你为什么要翻转阵列?如果您需要维护键值分配并按值排序,请使用'arsort'或'asort'。更清楚你的预期目标。 – Walf

回答

0

后排序使用array_walk对每个项目从十进制转换为字符串一样---

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

,然后翻转它。希望这可以帮助。

+0

如何将十进制转换为整数? –