Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在数组PHP中翻转字符串和十进制/浮点值?_Php_Arrays_Sorting_Ranking - Fatal编程技术网

如何在数组PHP中翻转字符串和十进制/浮点值?

如何在数组PHP中翻转字符串和十进制/浮点值?,php,arrays,sorting,ranking,Php,Arrays,Sorting,Ranking,我正在尝试制作一个应用程序,允许我根据十进制数的值对其进行排序,但array_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); /

我正在尝试制作一个应用程序,允许我根据十进制数的值对其进行排序,但array_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);


?>

还有一个关于数组翻转的警告

警告:array_flip()[function.array flip]:只能翻转字符串和整数值!在第9行的C:\xampp\htdocs\ranking.php中


你们知道怎么处理这些吗?有什么解决方案吗?

排序后,使用array\u walk将每个项目从十进制转换为字符串,如--


然后把它翻过来。希望这有帮助。

排序后,使用array\u walk将每个项目从十进制转换为字符串,如--


然后把它翻过来。希望这会有所帮助。

您需要将数组的值转换为字符串,以使其尽可能简单。例如,可以将“i”连接到每个值。然后,这些值将是翻转的有效索引值。您可以将数组值声明为
array(“1”、“0.334”、“-0.334”、“-1”)
但是执行
rsort($myarray\u copy,SORT\u NUMERIC)
强制进行数值排序。为什么要翻转数组?如果需要维护键-值关联和按值排序,请使用
arsort
asort
。更清楚你的预期目标。我想这就足够了。我把每一个小数点乘以1000,然后把它变成整数,然后翻转它,怎么样?我们可以这样做吗?您需要将数组的值转换为字符串,以使其尽可能简单。例如,可以将“i”连接到每个值。然后,这些值将是翻转的有效索引值。您可以将数组值声明为
array(“1”、“0.334”、“-0.334”、“-1”)
但是执行
rsort($myarray\u copy,SORT\u NUMERIC)
强制进行数值排序。为什么要翻转数组?如果需要维护键-值关联和按值排序,请使用
arsort
asort
。更清楚你的预期目标。我想这就足够了。我把每一个小数点乘以1000,然后把它变成整数,然后翻转它,怎么样?我们可以这样做吗?如何将十进制转换为整数?如何将十进制转换为整数?
function test_alter(&$item1, $key)
{
    $item1 = (string)$item1;
}
array_walk($fruits, 'test_alter', 'fruit');