'How to replace 0 with an empty string in PHP

I'm building a report in PHP, and am really new to this language.

I read the documentation on preg_replace, but it's not working exactly as I expect.

Here's my code:

    $pattern = 0;
    $replacement = ' ';

    $report_output.= '
        <td>'.preg_replace($pattern, $replacement, round($row[$win_count])).'</td>
    ';

Instead of replacing a result of 0 with an empty string, it replaces all results with an empty string. The round works great like this:

    <td>'.round($row[$win_count]).'</td>

It's just when I put the preg_replace around it, it says 'phooey, I shall replace everything'. What am I doing wrong?

php


Solution 1:[1]

You can use a simple shorthand ternary.

Generally: $variable ?: ''

If it is a false value, then the fallback empty string will be used.

Code: (Demo)

printf(
    '"%s" vs "%s"',
    round($row[$win_count]),
    round($row[$win_count]) ?: ''
);

Output:

"0" vs ""

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 mickmackusa