PHP заполнить строку специальными символами

Я написал это:

$date = $_SESSION['basket']['date'];
$number = $_SESSION['basket']['number'];
$type = $_SESSION['basket']['type'];

if ($number > 9) {
$fill = "********";
} else {
$fill = "*********";
}

echo "<pre>Date         | Number   | Type |</pre>";

foreach ($date as $key => $value) {
echo "<pre>" . $date[$key] . " | " . $number[$key] . $fill . "| " . $type[$key] .  "</pre>";
}

$ number — это всегда значение от 1 до 14 (количество дней), то есть один или два символа. Цель состоит в том, чтобы добиться хорошего выравнивания в моем выводе. Вот результат моего вывода:

Date         | Number   | Type
28.02.2017   | 2********| Top
26.02.2017   | 11********| Basic

Это не работает, значение $ fill всегда одинаково, иначе опция my if, кажется, не распознается. Есть идеи, как это решить? Спасибо.

-1

Решение

Правильный путь будет использовать str_pad функция

$targetLenght = 12;
$string ='Text';

$string = str_pad($string ,  $targetLenght, '*');
echo $string;

результаты в:
Текст********

2

Другие решения

Мне кажется, что ваша конечная скобка вашего оператора else находится в неправильной позиции. Разве ваш блок if if else не должен выглядеть примерно так ?:

if ($number > 9)     {
$fill = "********";
} else  {
$fill = "*********";
}
0

if - else Заявление было построено неправильно.
Используйте следующее:

if ($number > 9) {
$fill = "********";
} else {
$fill = "*********";
}

Или даже короче, используя str_pad функция:

...
$number = str_pad($number, 9, '*', STR_PAD_RIGHT);
...
0

Ты можешь использовать str_pad функция:

$ number = str_pad ($ number, 9, ‘*’, STR_PAD_RIGHT);

Как это работает в вашей ситуации:

function padNumber($number)
{
return str_pad($number, 9, '*', STR_PAD_RIGHT);
}

foreach ($date as $key => $value)
{
echo sprintf("<pre>%s|%s|%s</pre>", $date[$key], padNumber($number[$key]), $type[$key]);
}
0
if ($number > 9)

Мне кажется, что $ число это массив не ?? поэтому вам нужно написать что-то вроде этого:

if( $number[$index] > 9 )

Это исправленный код, проверьте его.

$date = $_SESSION['basket']['date'];
$number = $_SESSION['basket']['number'];
$type = $_SESSION['basket']['type'];

echo "<pre>Date         | Number   | Type |</pre>";

foreach ($date as $key => $value){
if ($number[$key] > 9)     {
$fill = "********";
}else $fill = "*********"; {
}
echo "<pre>$date[$key] . " | " . $number[$key] . $fill . "| " .$type[$key]."</pre>";
}
0
По вопросам рекламы [email protected]