我想循环输出数组$row中的值,听说用foreach输出数组最快,但是foreach每次循环时都要as给一个新变量,然后用新变量输出才行,感觉这样好麻烦啊,速度会不会比用for要慢?
foreach($result as $row) {
echo $row[0].'<br />';
}
以上代码我为了防止又新建一个新量,我这样做行不行?有没有什么弊端?
foreach($result as $sql_result) {
echo $result[0].'<br />';
}
foreach($result as $row) {
echo $row[0].'<br />';
}
以上代码我为了防止又新建一个新量,我这样做行不行?有没有什么弊端?
foreach($result as $sql_result) {
echo $result[0].'<br />';
}
foreach($result as $row) {
echo $row[0].' <br />';
} result至少是二维的$result[][],上面的语句才成立
这样每次循环相当于
$row=$result[0]
$row=$result[1]
$row=$result[2]
$row=$result[3]
循环中的$row[0]相当于$result[i][0]因此你第二种写法肯定不行
echo $row.' <br />';
}
以上代码我为了防止又新建一个新量,我这样做行不行?有没有什么弊端?
foreach($result as $result) {
echo $result.' <br />';
}
var_dump($result);
foreach($result as $row) {
var_dump($row);
} lz先理解了数组结构,再研究怎么用foreach..
手册~~~手册~~~
就等于把$result拆分成字符串$sql_result[0]&$sql_result[1]&$sql_result[2]&……
然后输出这样子
$result[0]没意义
如果你觉得foreach不爽,就使用while 或者for就行了
不也挺好用的吗
<?php
$ar = range(0, 1000);speed(1);
foreach($ar as $v) {
$r = $v;
}
echo '<br />foreach '.speed();speed(1);
for($i=0;$i<count($ar);$i++) {
$r = $ar[$i];
}
echo '<br />for '.speed();speed(1);
$i = count($ar);
while($i--) {
$r = $ar[i];
}
echo '<br />while '.speed();
?>结果:
foreach 153
for 607
while 2,461speed 函数代码
if(! function_exists('speed')):
function speed($mode=0) {
static $t = 0;
list($usec, $sec) = explode(" ", microtime());
if($mode) {
$t = $sec + $usec;
}else {
return number_format(($sec + $usec - $t)*1000000);
}
}
endif;
$username='test';
$pdo=new PDO($dsn, $db_user, $db_pwd);
$sql_str='select id,username from users where username=?';
$sql=$pdo->prepare($sql_str);
$sql->bindParam(1, $username, PDO::PARAM_STR,50);
$sql->execute();
$row=$sql->fetchAll(); //将返回的记录赋值给一个数组变量$row
$err_code=$sql->errorCode();
if($err_code=='00000') {
/*
关键就在下面这行代码,如果用$row as $row的话,输出时就可以用$row[]来输出记录
如果用$row as $row_print的话,那么输出就要用$row_print['...'],感觉这样多一个变量好麻烦啊
*/
foreach($row as $row) {
echo $row['username'];
}
}
因为使用for,while对数组遍历,总得计算数组行数吧?即用count函数,这得花费一次数组遍历的时间,内部再赋值,又得花费分配空间的时间.
foreach是内部进行优化了的,对数组操作相对效率高且方便.