Иногда ответы на эти вопросы требуют заметных предостережений, так что вот мои.
[1] Я предполагаю, что все значения в массиве будут в процентах, поэтому я исключил их из моего начального массива и добавил их при печати строки.
[2] Я допускаю положительный или отрицательный знак в начале каждого элемента.
[3] Я ожидаю, что числовое значение будет целым числом (я предполагаю, что вы хотите выравнивание как выв вашем вопросе, где каждое значение занимает два пробела)
Если какое-либо из этих предположений неверно, приведенный ниже код необходимо изменить, чтобы учесть изменения.
<?php
$arrPercentages = array('+9','+12','+1');
foreach($arrPercentages as $strPercentage) {
// Get rid of any spaces
$strPercentage = str_replace(' ', '', $strPercentage);
// Parse out the number
preg_match('/([\-\+]{1})([0-9]+)/', $strPercentage, $arrMatches);
// Don't continue if we didn't get a sign and number out of the string
if(count($arrMatches)) {
// Assign the "sign" to a variable
$strSign = $arrMatches[1];
// The number we want to print out as two character spaces
$strNumber = $arrMatches[2];
// Print it out!
echo $strSign.sprintf("%2s", $strNumber).'%<br>';
}
}
?>