gpt4 book ai didi

PHP JSON 计算同一数组中的值

转载 作者:行者123 更新时间:2023-11-29 08:14:11 24 4
gpt4 key购买 nike

我的 php 脚本中有一个 json 对象,它是使用 json_encode 编码的。 PHP 函数。

这是 var_dumped 时的对象...

string '{"voting_sys":"50","beta_site":"50"}' (length=36)
string '{"voting_sys":"50","beta_site":"50"}' (length=36)

数据库结构:Database Structure

我的目标是获取每个用户的 vote_sys 中的值的总和,以及 beta_site 中的值的总和...这将用于投票,但功能/值的数量未知。

有什么想法吗?我已经尝试过以下...

$voters = DB::table('votes')->get();
foreach($voters as $vote){
$vote_array[$voter->user_id]=json_decode($voter->value, true);
}
var_dump($vote_array);

这会将解码后的 json 对象返回到数组。我会将“voting_sys”指定为数组的键,然后将整数值指定为数组的值,但会有未知数量的功能。在此示例中,用户只能对两个功能进行投票,但以后可能会有更多功能。我使用功能 ID 推出一组用户可以投票的新功能。

我使用的是 Laravel 4.1

[编辑:结果]

    $feature_list = DB::table('features')->where('rev_id', Config::get('app.beta_rev'))->get();
$feature_array=array();
foreach ($feature_list as $feature){
array_push($feature_array, $feature->name);
}
foreach($feature_array as $feature){
$voters = DB::table('votes')
->select(DB::raw('sum(value)'))
->where('feature_name', '=', $feature)
->get();
echo $feature.' - ';
var_dump($voters);
echo '<br />';
}

当调用时,转储:

voting_sys -
array (size=1)
0 =>
object(stdClass)[248]
public 'sum(value)' => string '149' (length=3)

beta_site -
array (size=1)
0 =>
object(stdClass)[249]
public 'sum(value)' => string '69' (length=2)

这与我输入的投票完全正确。感谢您的帮助。

最佳答案

我建议使用稍微不同的数据库结构。在数据库中序列化/json_encode 数据几乎从来都不是一个好主意。由于您已经有一个专用的投票表,因此将您的表从当前拥有的更改为以下内容应该很简单:

id | user_id | feature | value
------------------------------
1 | 2 | sys | 50
2 | 2 | beta | 40
3 | 3 | sys | 50

这将使计数变得非常微不足道:

SELECT SUM(value) FROM table WHERE feature = 'sys'

关于PHP JSON 计算同一数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20935321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com