Php 如何对我不知道的项目求和´;我不知道名字?
我在我的Laravel应用程序上有此返回$request请求。此代码正好来自“return$request;”指挥部 这是控制器发来的Php 如何对我不知道的项目求和´;我不知道名字?,php,laravel,sum,Php,Laravel,Sum,我在我的Laravel应用程序上有此返回$request请求。此代码正好来自“return$request;”指挥部 这是控制器发来的 public function index(Request $request) { return $request; } 这是view.blade上的打印。它与您的完全不同,它具有: $jsonList = '{ "_method": "POST", "_token": null, "cliente": "2",
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求和,但它总是可变的,所以我永远不会得到名称,这样我就可以计算了。
你们会怎么做
有什么提示吗?
提前谢谢 使用
array\u 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;
如果你知道钥匙的一部分
$json=”{
“_方法”:“发布”,
“_标记”:空,
“客户”:“2”,
“nrocpfCnpj”:“00635344000177”,
“originalSegmento”:“4”,
“示例长度”:“10”,
“cota853”:“12975”,
“cota835”:“11945”,
“cota209”:“12110”,
“cota501”:“12110”
}';
$data=json_decode($json,true);
$keyPart='cota';
$filtered=array\u filter($data,function($k)use($keyPart){
返回strpos($k,$keyPart)==0;
},数组\过滤器\使用\键);
//[
//“cota853”=>“12975”
//“cota835”=>“11945”
//“cota209”=>“12110”
//“cota501”=>“12110”
//]
$sum=数组_sum($filtered);
//49140
根据密钥筛选数组,然后求和:
$sum = array_sum(array_filter($request, function($k) {
return strpos($k, 'cota') === 0;
}, ARRAY_FILTER_USE_KEY);
与@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;
我发现了错误
$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",
"cota853": "12975",
"cota835": "11945",
"cota209": "12110",
"cota501": "12110"
}
因此,我传递了一个名为cota的键,其值为853。这没有错,但不需要求和。所以我不会再通过了
谢谢你们 可能重复上面的例子可以解决你的问题给出的例子可以解决你的问题,如果没有解决,请在你的帖子中提供更多信息以获得更好的回复。你放弃了吗???不,看看我自己的答案!我应该检查我自己的答案来关闭它吗?嗨@potiev,谢谢你的帮助,但它不起作用array_walk()希望参数1是array,如果给定空值,则为空是的,但对我不起作用!为什么呢?始终获取此错误:
ErrorException(E\u WARNING)array\u walk()期望参数1为array,如果为空,则它会给我此错误:``为foreach()提供的参数无效``确保json数据被正确解码。在我这边测试和工作。那么你的json就不是了valid@MarcelloPatto试着寻找错误@Konorlevich,伙计们。你所有的答案现在都有效了。但我的总数不同。它返回49993个明显错误的值。我用的是同样的数字!可能是什么?@MarcelloPatto你能调试过滤和计算吗?它正在工作。我路过一个叫科塔(真的不知道为什么)的女伴,她指望着我的钱。