我正在使用PHP和多维数组。我已将点和其他信息存储为字符串变量。在数组中使用字符串变量非常重要。
我想对数组进行排序并添加3个新项目。我应该能够对我的子阵列进行排序。我也应该能够对点(pts_sting)和竞争(c_string)的字符串变量进行排序。
我需要某种foreach循环来自动完成这项工作。
以下示例可能比我的话更有帮助。
var re = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";
var regExp = new RegExp(e);
if(regExp.exec(t))
....
结果应如下所示:
Array (
[25] => Array (
[1] => Array (
[pts_string] => 00450
[c_string] => 00011
)
[2] => Array (
[pts_string] => 00600
[c_string] => 00025
)
[3] => Array (
[pts_string] => 00375
[c_string] => 00033
)
)
)
答案 0 :(得分:0)
你可以这样做:
$arr = [
"25" => [
"1" => ["pts_string" => "00450", "c_string" => "00011"],
"2" => ["pts_string" => "00600", "c_string" => "00025"],
"3" => ["pts_string" => "00375", "c_string" => "00033"]
]
];
uasort($arr["25"], function ($a, $b) { return $b['pts_string'] - $a['pts_string']; });
$pts = array_column($arr["25"], "pts_string");
$c = array_column($arr["25"], "c_string");
$arr["25"] = [ "pts_total" => array_sum($pts),
"all_pts_strings" => implode(' ', $pts),
"all_c_strings" => implode(' ', $c),
"no_of_competitions" => count($arr["25"])
] + $arr["25"];
print_r($arr);
如果您必须为数组中的每个项目执行此操作,请将所有代码放在foreach
循环中,并将$arr["25"]
替换为$item
:
foreach ($arr as &$item) {
...
}