1

我有一个成功显示帐号的循环。其中一些数字以“@”开头保存到数据库中。我想从显示的结果中去掉“@”符号。我已经看到了很多简单的 echo 解决方案,这些解决方案通过使用trim,preg_replace等来完成,但在for循环中没有任何内容。有任何想法吗?

我当前的代码(不包括尝试的解决方案):

<?php
$query = sprintf("SELECT banner_id FROM tablename") or die(mysql_error());
$result = mysql_query($query, $dblink) or die(mysql_error());
$i = 0;
if($result){
  while($row = mysql_fetch_array($result)){
    $banner_id[$i] = $row['banner_id'];
    $i++;
  }
}
?>
<html><body>
<ul>
<?php     
    for($x=0; $x < mysql_num_rows($result); $x++) {
        echo "<li>{$banner_id[$x]}</li>\n";
    }
?>
</ul>
</body></html>

电流输出:

  • 12345678
  • @98765432
  • @01230145

期望的输出:

  • 12345678
  • 98765432
  • 01230145

我觉得这应该很容易,但我找不到任何有效的方法。谢谢你的尽心帮助!

4

3 回答 3

6

我不明白为什么你认为你不能trim()for循环中使用。

<?php     
    for($x=0; $x < mysql_num_rows($result); $x++) {
        $out = ltrim($banner_id[$x], '@');
        echo "<li>$out</li>\n";
    }
?>
于 2012-05-24T15:38:36.937 回答
3
while($row = mysql_fetch_array($result)){
    $banner_id[$i] = trim( $row['banner_id'], '@' );
    $i++;
}

您发现在打印期间可以执行的任何操作也可以在打印之前进行。不过,我会避免在这样的简单替换中使用 preg_* 函数。


编辑:在看到其他评论后,我意识到这str_replace比 慢得多trim,并且比 .trim略快ltrim

我的测试代码:

<?php
$start = microtime(true);
for($i = 0; $i < 1000000; $i++)
{
    $test = '@123345567';
    $test = str_replace('@', '', $test);
}

$time = microtime(true) - $start;
print "str_replace(): $time";

$start = microtime(true);
for($i = 0; $i < 1000000; $i++)
{
    $test = '@123345567';
    $test = trim($test, '@');
}

$time = microtime(true) - $start;
print "<br/>trim(): $time";

$start = microtime(true);
for($i = 0; $i < 1000000; $i++)
{
    $test = '@123345567';
    $test = ltrim($test, '@');
}

$time = microtime(true) - $start;
print "<br />ltrim(): $time";

几个结果:

str_replace(): 0.64844393730164
trim(): 0.50381588935852
ltrim(): 0.51557087898254

str_replace(): 0.65361404418945
trim(): 0.49786400794983
ltrim(): 0.51703000068665

str_replace(): 0.64999985694885
trim(): 0.49114680290222
ltrim(): 0.5248019695282
于 2012-05-24T15:38:13.810 回答
0

你试过用echo "<li>".ltrim($banner_id[$x], '@')."</li>\n";吗?

于 2012-05-24T15:38:53.300 回答