如何解决php中的Str_pad问题

如何解决php中的Str_pad问题,php,Php,我正在尝试执行乘法运算,但我无法使用str_pad格式化,但我无法使用这种格式 举个例子,如果我在尝试乘法。421乘675 I want to do exactly in this format 4 2 1 x 6 7 5 __________ 2 1 0 5 2 9 4 7 x 2 5 2 6 x x ________________ 2 8 4 1 7 5 但是填充有一个问题,我无法在stru pad中显示

我正在尝试执行乘法运算,但我无法使用str_pad格式化,但我无法使用这种格式

举个例子,如果我在尝试乘法。421乘675

 I want to do exactly in this format

         4 2 1
      x  6 7 5
      __________
       2 1 0 5
     2 9 4 7 x
   2 5 2 6 x x
________________
   2 8 4 1 7 5
但是填充有一个问题,我无法在stru pad中显示这些
x
,当我使用这种格式时,它工作不正常。 它是这样显示的

这是密码

$multiplier = 421;
$multiplicand = 675;
$result = $multiplier * $multiplicand;
$pad_max = strlen($result);

$multiplicand_values = str_split($multiplicand);

echo str_pad($multiplier, $pad_max, " ", STR_PAD_LEFT) . PHP_EOL;
echo "<br/>";
echo str_pad("x" . $multiplicand, $pad_max, " ", STR_PAD_LEFT) . PHP_EOL;
echo "<br/>";
echo str_pad("-", $pad_max, "-", STR_PAD_LEFT) . PHP_EOL;
 echo "<br/>";

for($i = 0; null !== ($digit = array_pop($multiplicand_values)); ++$i)
{
    echo str_pad($multiplier * $digit * pow(1, $i), $pad_max, " ", STR_PAD_LEFT) . PHP_EOL;
    echo "<br/>";
}

 echo "<br/>";
echo str_pad("-", $pad_max, "-", STR_PAD_LEFT) . PHP_EOL;
echo "<br/>";
echo str_pad($result, $pad_max, " ", STR_PAD_LEFT) . PHP_EOL;
$multiplier=421;
$被乘数=675;
$result=$multiplier*$multiplier;
$pad_max=strlen($result);
$multipliand_values=str_split($multipliand);
echo str_pad($multiplier,$pad_max,“,str_pad_LEFT)。PHP_EOL;
回声“
”; echo str_pad(“x”。$被乘数,$pad_max,”,str_pad_左)。PHP_EOL; 回声“
”; echo str_pad(“-”,$pad_max,“-”,str_pad_LEFT)。PHP_EOL; 回声“
”; 对于($i=0;null!==($digit=array_pop($被乘数_值));++$i) { echo str_pad($multiplier*$digit*pow(1,$i),$pad_max,“,str_pad_LEFT); 回声“
”; } 回声“
”; echo str_pad(“-”,$pad_max,“-”,str_pad_LEFT)。PHP_EOL; 回声“
”; echo str_pad($result,$pad_max,“,str_pad_LEFT)。PHP_EOL;
您只需尝试:


要获取此输出,请执行以下操作:

      4 2 1
    x 6 7 5
___________
    2 1 0 5
  2 9 4 7 x
2 5 2 6 x x
___________
2 8 4 1 7 5
你需要把单词分开。我用过:

$multiplier=421;
$被乘数=675;
$result=$multiplier*$multiplier;
$pad_max=strlen(word_Wrap($result));
$multipliand_values=str_split($multipliand);
echo sprintf(“%${pad_max}s”,word_Wrap($multiplier))“
”; echo sprintf(“%${pad_max}s”,word_Wrap(“x”。$multipland))。“
”; 回声重复序列(“u”,最大$pad_)。”
; 对于($i=0;null!==($digit=array_pop($被乘数_值));++$i) { $value=$multiplier*$digit*pow(1,$i); $xValue=str_repeat(“x”,即$i); echo sprintf(“%${pad_max}s”,word_Wrap($value.$xValue))。“
”; } 回声重复序列(“u”,最大$pad_)。”
; 回显单词包装($result); 函数字_Wrap($value){ 返回wordwrap($value,1,“,true); }
如果HTML中有多个空格,浏览器将忽略空格。您需要使用和单空格字体。或者使用
我可以使用css,但它不会响应,因此它只是一个注释;)但是如果没有它,你将无法看到你的代码是否有效。@MichałSznurawa我给出了一个屏幕截图,因为我的格式有问题。我在问题中再次发布了一个屏幕截图,然后你可以看到problem@thamilian答案2105的第一行向右移动。我想转到左边请检查问题中的屏幕截图@thamilan@modgeek我得到了格式:让我们。
   421
  x675
______
  2105
 2947x
2526xx
______
284175
      4 2 1
    x 6 7 5
___________
    2 1 0 5
  2 9 4 7 x
2 5 2 6 x x
___________
2 8 4 1 7 5
$multiplier = 421;
$multiplicand = 675;
$result = $multiplier * $multiplicand;
$pad_max = strlen(word_Wrap($result));

$multiplicand_values = str_split($multiplicand);

echo sprintf("%${pad_max}s", word_Wrap($multiplier))."<br/>";
echo sprintf("%${pad_max}s", word_Wrap("x".$multiplicand))."<br/>";
echo str_repeat("_", $pad_max)."<br/>";

for($i = 0; null !== ($digit = array_pop($multiplicand_values)); ++$i)
{
    $value = $multiplier * $digit * pow(1, $i);
    $xValue = str_repeat("x", $i);
    echo sprintf("%${pad_max}s", word_Wrap($value.$xValue))."<br/>";
}

echo str_repeat("_", $pad_max)."<br/>";
echo word_Wrap($result);

function word_Wrap($value) {
    return wordwrap($value, 1, " ", true);
}