Проблема в том, что даже если вы проверяете, содержит ли строка 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;