php - 在 if 语句内部/之后创建变量
问题描述
在带有键“字符串”和“值”的 JSON 中:
'Something xxx something' = 10
'Something yyy something' = 20
'Something xxx something' = 30
'Something zzz something' = 40
我想要的流程是:
find partial string inside string
if true
get sum of all its matched string's value
if false
return 0
我尝试的是
if (strpos($string, 'xxx') == false){
$value = array_sum(array_column($arrayjson['string'],'value'));
continue;
}
echo $value
但是,我得到的是
100
100
预期结果是40
解决方案
问题是,即使您检查字符串是否包含xxx
(顺便说一句,您应该使用它,!== false
因为它可能会返回0
),然后您使用array_column()
提取所有值并将它们全部加起来(这就是您得到 100 的原因)。
这会遍历数据并仅添加与所需字符串匹配的行...
$data = [ ['string' => 'Something xxx something', 'value' => 10],
['string' => 'Something yyy something', 'value' => 20],
['string' => 'Something xxx something', 'value' => 30],
['string' => 'Something zzz something', 'value' => 40]];
$total = 0;
foreach ( $data as $row ) {
if (strpos($row['string'], 'xxx') !== false){
$total += $row['value'];
}
}
echo $total;
推荐阅读
- jquery - laravel sweetalert2 Uncaught TypeError:无法将类作为函数调用
- flutter - 如何在共享扩展中获取 shared_preferences
- angular - 错误 TS2694:命名空间 r3_symbols 没有导出成员 'ɵɵFactoryDef'
- c# - Apache 使用泛型的过滤器或谓词条件点燃 loadCache()
- php - 使用 mpdf 将 Google 图表导出为 PDF 的问题
- reactjs - 如何在没有 forwardedRef 的情况下使用 typescript 在 React hoc 中创建 ref
- scala - SciSpark:从本地文件夹而不是 HDFS 文件夹读取
- vim - 在 python 函数中搜索变量(不在文件中):vim
- laravel - 如何在 GCP Flex 环境中设置 websocket?
- java - 为什么我的查询返回列表中至少包含一个参数的所有项目,而不是列表中包含所有参数的参数?