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使用更多处理。