【问题标题】:how can i sort array which is create of a loop?如何对创建循环的数组进行排序?
【发布时间】:2021-10-11 03:20:02
【问题描述】:
function sortpm($parameters){
if(strpos($parameters,"&")!==false){
    foreach(explode("&",$parameters) as $pmsplit){
        $key = explode("=",$pmsplit)[0];
        $value = explode("=",$pmsplit)[1];
        $fields[]=[$key=>$value];
    }
   $parameters = ksort($fields);
}else{
        $parameters = $parameters;
}
print_r($parameters);
}

当我得到 sortpm("z=4&a=2"); 数组不按键排序

我想要这个输出:Array ([a] => 2[z] => 4)

【问题讨论】:

  • 实际输出是多少?当我使用提供的输入运行您的函数时,我得到1。此外,您可能应该使用parse_str()

标签: php arrays sorting ksort


【解决方案1】:

ksort 将对$fields 数组进行排序并返回一个布尔值。你会想要这样的东西:

$parameters = $fields;
ksort($parameters);

这里也发生了一些不必要的事情。我会像这样重写你的代码:

function sortpm($parameters){
    // Make sure to set a default value to your variables
    $fields = [];
    // No need for the if case - explode will always return an array
    foreach(explode("&",$parameters) as $pmsplit){
        // Instead of exploding twice - explode once, but set a limit
        $exploded = explode("=", $pmsplit, 2);
        // If there is no second parameter, fill in a null value
        $fields[$exploded[0]]= isset($exploded[1]) ? $exploded[1] : null;
    }
   ksort($fields);
   print_r($fields);
}

或者,您可以使用 parse_str 作为AymDev pointed out

【讨论】:

    猜你喜欢
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多