当前位置:首页 » 编程语言 » php引用foreach

php引用foreach

发布时间: 2023-02-04 22:31:59

php中foreach循环中使用引用要注意的地方

复制代码
代码如下:
foreach
($array
as
&$row)
{
$row
=
explode('/',
$row);
}
foreach
($array
as
$row)
{
//do
something
}
这么写,在第二个循环会出逻辑错误,加入第二个循环中do
something的地方是输出$row,循环到最后一个的时候的输出是倒数第二个元素,而不是最后一个
要这么写
复制代码
代码如下:
foreach
($array
as
&$row)
{
$row
=
explode('/',
$row);
}
unset($row);
foreach
($array
as
$row)
{
//do
something
}
或者第一个循环这么写
复制代码
代码如下:
foreach
($array
as
$key
=>
$row)
{
$array[$key]
=
explode('/',
$row);
}
说一下原理
第一个循环使用了引用,循环结束后,$row引用的是$array数组的最后一个元素,当开始第二个循环的时候,$row变量每次循环都会被赋一个新值,在php中,如果一个内存空间是被引用的,那么当改变它的时候是直接改变这块内存空间的值,也就是说,当第二个foreach的第一次循环,$array的最后一个元素的值就被改变为$array的第一个元素的值,第二次循环的时候,改变为第二个元素的值,倒数第二次循环的时候,被改变为倒数第二个元素值,而最后一次循环的时候得道的值必然是那个倒数第二个值
当然,如果php的for循环有作用域的话,也不会出现此问题.....

⑵ PHP中的函数-- foreach()的用法详解

PHP
4
引入了
foreach
结构,和
Perl
以及其他语言很像。这只是一种遍历数组简便方法。foreach
仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。
复制代码
代码如下:
foreach
(array_expression
as
$value)

statement
foreach
(array_expression
as
$key
=>
$value)

statement
第一种格式遍历给定的
array_expression
数组。每次循环中,当前单元的值被赋给
$value
并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量
$key。
自PHP
5
起,还可能遍历对象。
注意:当
foreach
开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在
foreach
循环之前调用
reset()。
注意:除非数组是被引用,foreach
所操作的是指定数组的一个拷贝,而不是该数组本身。foreach对数组指针有些副作用。除非对其重置,在
foreach
循环中或循环后都不要依赖数组指针的值。

PHP
5
起,可以很容易地通过在
$value
之前加上
&
来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。
复制代码
代码如下:
<?php
$arr
=
array(1,
2,
3,
4);
foreach
($arr
as
&$value)
{

$value
=
$value
*
2;
}
//
$arr
is
now
array(2,
4,
6,
8)
?>
此方法仅在被遍历的数组可以被引用时才可用(例如是个变量)。
复制代码
代码如下:
<?php
foreach
(array(1,
2,
3,
4)
as
&$value)
{

$value
=
$value
*
2;
}
?>

⑶ php中foreach循环语句 如何使用

$conn=mysql_connect("localhost","root","");
mysql_select_db("test");
mysql_query("set names utf8",$conn);
$result=mysql_query("select * from tb_messages");
$result=mysql_query($sql_excel);
while($arr = mysql_fetch_assoc($result)){
$content[]=$arr;

}
$table = '<table>';
$table .= '<thead><tr><th>id</th><th>标题</th><th>电话</th><th>地址</th><th>审核状态</th><th>内容</th><th>留言时间</th></thead>';
$table .= '<tbody>';
foreach($content as $key=>$value){
$table .= "<tr>";
$table .= "<td>".$value['id'].'</td>';
$table .= "<td>".$value['title'].'</td>';
$table .= "<td>".$value['phone'].'</td>';
$table .= "<td>".$value['address'].'</td>';
$table .= "<td>".$value['ischeck'].'</td>';
$table .= "<td>".$value['content'].'</td>';
$table .= "<td>".substr($value['datetime'],0,11).'</td>';
$table .= '</tr>';
}
$table .= '</tbody>';
$table .= '</table>';
echo $table;

⑷ PHP中的foreach

我觉得你思路上是不是有点错误在==6时不是停止遍历,而是跳过因为循环一停止就是整个的停止,再开始就是根据条件再次开始了。。。

⑸ php 怎么调用foreach

foreach 是php里用来遍历数组用的

具体用法下

//普通数组
$arr=array(1,2,3,4,5);
foreach($arras$v){
echo$v." ";
}

//键值数组
$arr2=array(
"a"=>1,
"b"=>2,
"c"=>3,
);
foreach($arr2as$k=>$v){
echo$k."==".$v." ";
}

执行结果:

热点内容
大激战脚本 发布:2024-11-01 18:35:25 浏览:110
中国大学mooc密码要求是什么 发布:2024-11-01 18:33:45 浏览:817
jrtplib编译 发布:2024-11-01 18:06:01 浏览:227
java代码中if 发布:2024-11-01 18:02:40 浏览:378
android定时刷新 发布:2024-11-01 17:59:43 浏览:1000
炎黄解说我的世界服务器生存 发布:2024-11-01 17:59:42 浏览:543
如何清楚网页缓存 发布:2024-11-01 17:53:58 浏览:553
linux文件权限不够 发布:2024-11-01 17:53:19 浏览:918
c语言中10是什么意思 发布:2024-11-01 17:45:08 浏览:893
装棉衣压缩袋 发布:2024-11-01 17:37:18 浏览:298