Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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 - Fatal编程技术网

Php 如何将关联数组排序为可选的最大最小顺序?

Php 如何将关联数组排序为可选的最大最小顺序?,php,arrays,Php,Arrays,有人知道如何将关联数组排序为交替的最大值和最小值吗 即 应成为: array("E"=>30, "D"=>1, "A"=>10, "F"=>1, "G"=>7, "B"=>2, "C"=>5) 谢谢根据您之前对这个问题的回答: $myArray = array("A"=>10, "B"=>2, "C"=>5, "D"=>1, "E"=>30, "F"=>1, "G"=>7); asort($myArray);

有人知道如何将关联数组排序为交替的最大值和最小值吗

应成为:

array("E"=>30, "D"=>1, "A"=>10, "F"=>1, "G"=>7, "B"=>2, "C"=>5)

谢谢

根据您之前对这个问题的回答:

$myArray = array("A"=>10, "B"=>2, "C"=>5, "D"=>1, "E"=>30, "F"=>1, "G"=>7);
asort($myArray);
$myArrayKeys = array_keys($myArray);

$newArray = array();
while (!empty($myArray)) {
    $newArray[array_shift($myArrayKeys)] = array_shift($myArray);
    if (!empty($myArray))
        $newArray[array_pop($myArrayKeys)] = array_pop($myArray);
}
var_dump($newArray);
或者,如果您想先使用最大的:

$myArray = array("A"=>10, "B"=>2, "C"=>5, "D"=>1, "E"=>30, "F"=>1, "G"=>7);
asort($myArray);
$myArrayKeys = array_keys($myArray);

$newArray = array();
while (!empty($myArray)) {
    $newArray[array_pop($myArrayKeys)] = array_pop($myArray);
    if (!empty($myArray))
        $newArray[array_shift($myArrayKeys)] = array_shift($myArray);
}
var_dump($newArray);

在结果示例中,我没有看到任何排序算法。请你指出它好吗?我想是最大的,最小的,第二大的,第二小的等等。那么问题是什么?首先对数组进行升序或降序排序,然后对其进行迭代,并按任意顺序构造输出数组。嗯?这就是我要问的!我如何实现它?当排序数组中还有元素时,您迭代函数。在每次迭代中,根据关键点是否均匀/不均匀,从数组中弹出最后/第一个元素。这就是你的意思?
$myArray = array("A"=>10, "B"=>2, "C"=>5, "D"=>1, "E"=>30, "F"=>1, "G"=>7);
asort($myArray);
$myArrayKeys = array_keys($myArray);

$newArray = array();
while (!empty($myArray)) {
    $newArray[array_pop($myArrayKeys)] = array_pop($myArray);
    if (!empty($myArray))
        $newArray[array_shift($myArrayKeys)] = array_shift($myArray);
}
var_dump($newArray);