Замена динамических значений в PHP может быть достигнута с помощью следующего кода:
$replace = array('{COVER_AMT}','{LIABILITY_AMT}','{TOTAL_AMT}');
$with = array('90', '90', '0');
$myString = 'This is Cover Amt : {COVER_AMT} . This is liablity amount : {LIABILITY_AMT} . This is total amount : {TOTAL_AMT}';
echo str_replace($replace, $with, $myString);
вывод:
This is Cover Amt : 90 . This is liablity amount : 90 . This is total amount : 0
Это даст правильный результат.
Но когда значение равно 0, он не должен отображать сам текст. Для этого случая это общая сумма не должна отображаться вообще, так как она равна 0.
Проверка с условием If не является отличным решением, так как это испортит код, если есть много "0".
Если имеется около 100 элементов массива, невозможно будет проверить для каждого значения. Любое решение, которое может использоваться для любого количества входов данных, будет отличным.
Любой, у кого есть отличная идея для этого.
Благодарю.
Почему бы не попробовать что-то вроде этого:
<?php
$replace = array('{COVER_AMT}','{LIABILITY_AMT}','{TOTAL_AMT}', 'This is total amount : 0');
$with = array('90', '90', '0','');
$myString = 'This is Cover Amt : {COVER_AMT} . This is liablity amount : {LIABILITY_AMT} . This is total amount : {TOTAL_AMT}';
echo str_replace($replace, $with, $myString);
?>
Он удалит только последнюю часть, если общая сумма равна 0.
По редактируемому вопросу:
<?php
$replace = array('{COVER_AMT}','{LIABILITY_AMT}','{TOTAL_AMT}');
$with = array('0', '90', '0');
$myString = 'This is Cover Amt : {COVER_AMT} . This is liablity amount : {LIABILITY_AMT} . This is total amount : {TOTAL_AMT}';
$myString = str_replace($replace, $with, $myString);
$myString_array = explode("This is",$myString);
foreach($myString_array as $myString_sliced) {
$pattern = '/(\.?)(This is )(.*?) 0(\s?)(\.?)/i';
$replacement = '';
if($myString_sliced)
echo preg_replace($pattern, $replacement, "This is ".$myString_sliced);
}
?>
сначала замените все 0
из пустой строки, попробуйте этот код
<?php
$replace = array('{COVER_AMT}','{LIABILITY_AMT}','{TOTAL_AMT}');
$with = array('90', '90', '0');
$with = array_map(function($v){return $v <= 0 ? '' : $v;}, $with);
$myString = 'This is Cover Amt : {COVER_AMT} . This is liablity amount : {LIABILITY_AMT} . This is total amount : {TOTAL_AMT}';
echo str_replace($replace, $with, $myString);