php';对于';循环/mysql查询

php';对于';循环/mysql查询,php,mysql,for-loop,character,strip,Php,Mysql,For Loop,Character,Strip,我有一个循环,成功地显示了帐号。其中一些数字以“@”前缀保存到数据库中。我想从显示的结果中去掉“@”符号。我见过很多简单回音的解决方案,它们通过使用trim、preg\u replace等来实现这一点,但在for循环中没有。有什么想法吗 我的当前代码(不包括尝试的解决方案): 电流输出: 12345678 @98765432 @01230145 期望输出: 12345678 98765432 01230145 我觉得这应该很容易,但我找不到任何有效的方法。谢谢你能提供的任何帮助

我有一个循环,成功地显示了帐号。其中一些数字以“@”前缀保存到数据库中。我想从显示的结果中去掉“@”符号。我见过很多简单回音的解决方案,它们通过使用
trim
preg\u replace
等来实现这一点,但在
for
循环中没有。有什么想法吗

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


电流输出:

  • 12345678
  • @98765432
  • @01230145
期望输出:

  • 12345678
  • 98765432
  • 01230145
我觉得这应该很容易,但我找不到任何有效的方法。谢谢你能提供的任何帮助

while($row = mysql_fetch_array($result)){
    $banner_id[$i] = trim( $row['banner_id'], '@' );
    $i++;
}
打印期间可以执行的任何操作也可能发生在打印之前。不过,在这样一个简单的替换中,我会避免使用preg_*函数


编辑:看到其他评论后,我意识到
stru 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";
打印期间可以执行的任何操作也可能发生在打印之前。不过,在这样一个简单的替换中,我会避免使用preg_*函数


编辑:看到其他评论后,我意识到
stru 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";

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

<?php     
    for($x=0; $x < mysql_num_rows($result); $x++) {
        $out = ltrim($banner_id[$x], '@');
        echo "<li>$out</li>\n";
    }
?>

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

<?php     
    for($x=0; $x < mysql_num_rows($result); $x++) {
        $out = ltrim($banner_id[$x], '@');
        echo "<li>$out</li>\n";
    }
?>


您是否尝试过使用
echo“
  • ”.ltrim($banner\u id[$x],“@”)。“
  • \n”

    您是否尝试使用
    echo“
  • ”.ltrim($banner\u id[$x],“@”)。“
  • \n”

    请停止使用古老的
    mysql.*
    函数编写新代码。它们不再得到维护,社区已开始恢复。相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果你想学习的话,循环结构中的变量没有什么神奇之处。不确定你的问题是什么,因为你没有说出你尝试过的不起作用的东西。你只是表明你所做的一切都不起作用。显示不起作用的内容。请停止使用古老的
    mysql.*
    函数编写新代码。它们不再得到维护,社区已开始恢复。相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果你想学习的话,循环结构中的变量没有什么神奇之处。不确定你的问题是什么,因为你没有说出你尝试过的不起作用的东西。你只是表明你所做的一切都不起作用。显示不起作用的内容。因为它只需要从一开始就删除。使用
    ltrim
    肯定会更有效?谢谢,lorenzo-s。我也试过类似的方法,但我就是做不到。您的解决方案(是的,尼克,使用
    ltrim
    )运行得非常好。你们太棒了。因为它只需要从一开始就删除。使用
    ltrim
    肯定会更有效吗?谢谢,lorenzo-s。我也试过类似的方法,但我就是做不到。您的解决方案(是的,尼克,使用
    ltrim
    )运行得非常好。你们太棒了。+1.5用于测试,-0.5用于让我为为什么
    ltrim
    trim
    慢而生气:D说真的,为什么?!看起来trim使用了本机函数,r和l trim使用了更多的处理。测试中+1.5,-0.5让我为为什么
    ltrim
    trim
    慢而恼火:D说真的,为什么?!看起来trim使用本机函数,r和l trim使用更多处理。