php - 如何对创建循环的数组进行排序?
问题描述
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 )
解决方案
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 指出的那样。
推荐阅读
- c# - 基于 MainState 枚举绑定 SubState 枚举
- robotframework - 如何为机器人框架中的嵌套变量创建新值/分配新值?
- database - 处理请求时出错错误代码:500 错误文本:内部服务器错误
- python - Python 轮未安装在所谓的兼容 Windows 系统中
- sql - 从本机编译的存储过程遍历 Azure SQL 上的层次结构
- c# - 运行范围报告代码时出错
- android - 数组不添加任何数据
- packer - 为 ansible provisioner 使用自定义配置文件
- python - Python字符检查和替换
- excel - 将excel字段中的值与if条件相乘