首页 > 解决方案 > 在 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

标签: phpif-statement

解决方案


问题是,即使您检查字符串是否包含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;

推荐阅读