我试图解析一个带有不相关前导文本(将被删除)的字符串数组,然后创建一个关联数组,如果多次遇到相同的键,则对值求和。
$assessmentArr = [
'a_b_money-rewards=30',
'c_d_status-stability=15',
'e_f_personal-professional-development=32',
'g_h_community-support=9',
'i_j_money-rewards=12',
'k_l_status-stability=16',
'm_n_personal-professional-development=29',
];
foreach($assessmentArr as $data) {
$fullArr = explode("_", $data);
$resultArr = explode("=", $fullArr[2]);
// what do I do with $resultArr?
}
预期结果:
Array
(
[community-support] => 33
[money-rewards] => 42
[status-stability] => 31
[personal-professional-development] => 61
)
我发现了这个问题:How to merge two arrays by summing the merged values,它可以帮助我合并和添加值,但是我不确定当数组没有被赋给变量时该如何操作。我尝试做的事情是可能的还是我的方法不对?
3条答案
按热度按时间eimct9ow1#
不要把它弄得太复杂,只要检查结果数组中是否已经有一个元素具有那个键,如果没有,就初始化它,否则就添加它。
(Add循环中的此代码):
这样就得到了所需的阵列:
hivapdat2#
你可以这样做
首先检查数组中是否已经存在键,如果是,则将键的值添加到最后一个数组中的值,否则将新的索引添加到最后一个数组中,将resultArr中的值作为初始值。
......太慢了:/
bvjveswy3#
在将文本解析为有意义的部分时,使用连字符串作为键,使用数字作为值。如果第一次遇到键,则存储0与当前值之和;否则求和并存储所述存储值和所述当前值。
代码:(Demo)
或者,要进行更直接的解析,请使用
preg_match_all()
调用。Demo