如何对我不知道名字的物品求和?

时间:2019-07-25 17:24:08

标签: php laravel sum

我在Laravel应用上有此return $ request。这段代码恰好来自“ return $ request;”。命令。

这是来自控制器

public function index(Request $request)
    {
    return $request; 
} 

这是view.blade上的打印件。与您的有很大不同:

$jsonList = '{ 
    "_method": "POST",
    "_token": null,
    "cliente": "2",
    "nrocpfCnpj": "00635344000177",
    "originalSegmento": "4",
    "example_length": "10",
    "cota853": "12975",
    "cota835": "11945",
    "cota209": "12110",
    "cota501": "12110"
}

还有我的

{
    "_method": "POST",
    "_token": null,
    "cliente": "2",
    "nrocpfCnpj": "00635344000177",
    "originalSegmento": "4",
    "example_length": "10",
    "cota853": "12975",
    "cota835": "11945",
    "cota209": "12110",
    "cota501": "12110"
    }

我需要对每个Cota求和,但是它总是可变的,所以我永远都不会得到名字,所以我可以进行数学计算。 你们会怎么做?

有任何提示吗? 预先感谢!

5 个答案:

答案 0 :(得分:0)

使用array_walk和正则表达式选择带有单词cota的键

$data = $request->all();

$sum = 0;

array_walk($data, function ($item, $key) use (&$sum){
    if (preg_match('/^cota*/', $key) === 1) {
        $sum += $item;
    }    
});

echo $sum;

答案 1 :(得分:0)

如果您知道钥匙的一部分

$json = '{
"_method": "POST",
"_token": null,
"cliente": "2",
"nrocpfCnpj": "00635344000177",
"originalSegmento": "4",
"example_length": "10",
"cota853": "12975",
"cota835": "11945",
"cota209": "12110",
"cota501": "12110"
}';
$data = json_decode($json,true);

$keyPart = 'cota';

$filtered = array_filter($data, function($k) use($keyPart) {
    return strpos($k,$keyPart) === 0;
}, ARRAY_FILTER_USE_KEY);
//[
//  'cota853' => "12975"
//  'cota835' => "11945"
//  'cota209' => "12110"
//  'cota501' => "12110"
//]

$sum = array_sum($filtered);
//49140

答案 2 :(得分:0)

根据键过滤数组,然后求和:

$sum = array_sum(array_filter($request, function($k) {
                                            return strpos($k, 'cota') === 0;
                                        }, ARRAY_FILTER_USE_KEY);

答案 3 :(得分:0)

类似于@potiev的答案,但使用strpos而不是regex。 strpos()返回字符串开始处的偏移量或布尔值false。

$json = '{
    "_method": "POST",
    "_token": null,
    "cliente": "2",
    "nrocpfCnpj": "00635344000177",
    "originalSegmento": "4",
    "example_length": "10",
    "cota853": "12975",
    "cota835": "11945",
    "cota209": "12110",
    "cota501": "12110"
}';


$data = json_decode($json, true);
$sum = 0;

foreach($data as $key => $value){
    if(strpos($key, 'cota') !== false){
        $sum = $sum + $value; 
    }
}

echo $sum;

答案 4 :(得分:0)

我发现了错误。

-- server/
 |  build/
 |    apis/
 |      mainApi.js
 |    store/
 |      models/
 |        User.js
 |    index.js
 |
 |  src/
 |    apis/
 |      mainApi.js
 |    store/
 |      models/
 |        User.js
 |    index.js

返回:

$data = $request->all();
        $keyPart = 'cota';
        $filtered = array_filter($data, function ($k) use ($keyPart) {
            return strpos($k, $keyPart) === 0;
        }, ARRAY_FILTER_USE_KEY);
        return $filtered;

因此,我传递了一个名为cota的键,其值为853。这没有错,但不需要总和。所以我不再通过了。

谢谢你们这些家伙!