php字符串形成

php字符串形成,php,string,format,Php,String,Format,我有一个非常简单的问题,对我来说不简单,因为我是一名学生,但我必须从某个地方开始,所以问题是我有一个字符串数组 array("+9%","+12%","+1%") 如何格式化输出字符串,例如在我想要的浏览器中,如下所示: + 9 % +12 % + 1 % 谢谢你的帮助。 <? foreach($yourarray as $element) { echo $element."<br />"; } ?> 假设输出中的空格是打字错误 您可以使用foreac

我有一个非常简单的问题,对我来说不简单,因为我是一名学生,但我必须从某个地方开始,所以问题是我有一个字符串数组

array("+9%","+12%","+1%")
如何格式化输出字符串,例如在我想要的浏览器中,如下所示:

+ 9 %
+12 %
+ 1 %
谢谢你的帮助。


<?
 foreach($yourarray as $element) {
    echo $element."<br />";
}


?>

假设输出中的空格是打字错误

您可以使用
foreach()
循环来迭代aray

$myArray = array("+9%","+12%","+1%");
foreach ($myArray  as $elem) { 
   echo $elem . '<br>'; //BR is for breaks in the browser.
}
$myArray=array(“+9%”、“+12%”、“+1%”);
foreach($myArray作为$elem){
echo$elem.“
”;//br表示浏览器中的中断。 }
如果空格不是错别字,它会变得有点棘手

$myArray = array("+9%","+12%","+1%");
foreach ($myArray  as $elem) { 
   $sign    = $elem[0]; //gets the first element of the string treated as an array
   $number  = substr($elem, 1, strpos($elem, '%') - 1); //gets the number part by starting from the left and going till you hit a % sign
   $percent = $elem[strlen($elem) - 1]; //getting the last part of the string
   echo "{$sign} {$number} {$percent} <br>";
}
$myArray=array(“+9%”、“+12%”、“+1%”);
foreach($myArray作为$elem){
$sign=$elem[0];//获取作为数组处理的字符串的第一个元素
$number=substr($elem,1,strpos($elem,%')-1);//从左边开始,一直到碰到%符号为止,获取数字部分
$percent=$elem[strlen($elem)-1];//获取字符串的最后一部分
回显“{$sign}{$number}{$percent}
”; }

上面的代码非常随意,只适用于您的数组,但我见过更奇怪的家庭作业

看看这一页:

应该是这样的:

$values = array("+9%","+12%","+1%");
echo sprintf ("+%2d \n+%2d \n+2%d", intval($values[0]), intval($values[1]), intval($values[2])); 
我的两分钱:

foreach ($data as $entry) {  
    echo '+'.str_pad(trim(str_replace(array('+', '%'), $entry)), 2).' %';
}

有时回答这些问题需要注意,所以这里是我的

[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>';

    }

}

?>

作为一种适用于负数和零的解决方案,而且更紧凑:

$arr = array("+9%","+12%","+1%");
foreach($arr as $num) {
    echo preg_replace("~^([+-]?)(\d+)%$~e", "sprintf('%1s%2s %%', '$1', $2)",  $num)."<br/>";
}
$arr=数组(“+9%”、“+12%”、“+1%”);
foreach($arr作为$num){
echo preg_replace(“~^([+-]?)(\d+)%$~e”,“sprintf(“%1s%2s%%”,“$1”,“$2)”,$num)。”
; }
有点过头;-):

$array=array(
'+196%',
'+ 12%',
“-16厘”,
'-84 %'
);
$rows=array();
foreach($array作为$element)
{
preg_匹配('/(?[-+])?\s?(?[0-9]+)?\s?(?.*)/',$element,$matches);
$rows[]='.$matches['sign'].'..$matches['number'.'.'.'..$matches['remaining'.'”;
}
回声'
数据行
跨度{
浮动:左;
}
.签名{
清除:左;
宽度:1ex;
}
.号码{
宽度:4ex;
右侧填充:1ex;
文本对齐:右对齐;
}
' . 内爆(PHP_EOL,$rows)。'
';

我想他也想把部队排好。所以9、2和1都排成一行。更漂亮的是使用
str_pad()
;)@笨蛋?蚂蚁?王牌猿?嗯,哈哈?我指的是你文章的结尾,看起来还没有完成。编辑您复制了上一句话中的“上述代码相当不错”。@mellamokb ohhh!所以编辑器在撤消/重做时有一些奇怪的行为:现在修复了!谢谢,我的第一个答案是。。。我应该仔细看看。
$array = array(
    '+196%',
    '+ 12%',
    '- 16 pct',
    '-84 %'
);

$rows = array();
foreach( $array as $element )
{
    preg_match( '/(?<sign>[-+])?\s?(?<number>[0-9]+)?\s?(?<remaining>.*)/', $element, $matches );
    $rows[] = '<div><span class="sign">' . $matches[ 'sign' ] . '</span><span class="number">' . $matches[ 'number' ] . '</span><span class="remaining">' . $matches[ 'remaining' ] . '</span></div>';
}

echo '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Rows of data</title>
<style type="text/css">
span {
    float: left;
}
.sign {
    clear: left;
    width: 1ex;
}
.number {
    width: 4ex;
    padding-right: 1ex;
    text-align: right;
}
</style>
</head>
<body>
' . implode( PHP_EOL, $rows ) .  '
</body>
</html>';