minor #41561 [String] Fix implicit float-to-int casts (derrabus)
This PR was merged into the 5.2 branch.
Discussion
----------
[String] Fix implicit float-to-int casts
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Part of #41552
| License | MIT
| Doc PR | N/A
`str_repeat()` expects an integer, but the result of the division might be a float. PHP 8.1 will complain here, so I'm using an integer division instead.
Commits
-------
448a017fd1
[String] Fix implicit float-to-int casts
This commit is contained in:
commit
bc43d4edf0
@ -480,22 +480,22 @@ abstract class AbstractUnicodeString extends AbstractString
|
||||
|
||||
switch ($type) {
|
||||
case \STR_PAD_RIGHT:
|
||||
return $this->append(str_repeat($pad->string, $freeLen / $padLen).($len ? $pad->slice(0, $len) : ''));
|
||||
return $this->append(str_repeat($pad->string, intdiv($freeLen, $padLen)).($len ? $pad->slice(0, $len) : ''));
|
||||
|
||||
case \STR_PAD_LEFT:
|
||||
return $this->prepend(str_repeat($pad->string, $freeLen / $padLen).($len ? $pad->slice(0, $len) : ''));
|
||||
return $this->prepend(str_repeat($pad->string, intdiv($freeLen, $padLen)).($len ? $pad->slice(0, $len) : ''));
|
||||
|
||||
case \STR_PAD_BOTH:
|
||||
$freeLen /= 2;
|
||||
|
||||
$rightLen = ceil($freeLen);
|
||||
$len = $rightLen % $padLen;
|
||||
$str = $this->append(str_repeat($pad->string, $rightLen / $padLen).($len ? $pad->slice(0, $len) : ''));
|
||||
$str = $this->append(str_repeat($pad->string, intdiv($rightLen, $padLen)).($len ? $pad->slice(0, $len) : ''));
|
||||
|
||||
$leftLen = floor($freeLen);
|
||||
$len = $leftLen % $padLen;
|
||||
|
||||
return $str->prepend(str_repeat($pad->string, $leftLen / $padLen).($len ? $pad->slice(0, $len) : ''));
|
||||
return $str->prepend(str_repeat($pad->string, intdiv($leftLen, $padLen)).($len ? $pad->slice(0, $len) : ''));
|
||||
|
||||
default:
|
||||
throw new InvalidArgumentException('Invalid padding type.');
|
||||
|
Reference in New Issue
Block a user