A. php中foreach的第一种用法中as $value此时$value得到值是怎样的呢,是否带有name呢
按您的代码分析,此时的$data是二维数组,因此分解后得到的$goods是一维数组,正好是一条记录,并且其键正好是字段名。所以就可以按你质疑的方式正常的运行了
B. php中两个 foreach 嵌套,第一层的值不循环 怎么办
代码本身没看到啥问题,估计是没数据,你改成这样试试:
$category=pdo_get($this->tablename,array('username'=>$username,'status'=>'1'));
$tablegrade=pdo_getall($this->tableclass,array('pid'=>$category['id'],'type'=>1));
foreach($tablegradeas$v){
$tableclass=pdo_getall($this->tableclass,array('pid'=>$v['id'],'type'=>'2'));
var_mp($tableclass);//如果只打印了一年级的数据,说明你确实没数据
}
C. PHP中如何使用foreach结构遍历数组
注:foreach只能用于数组
第一种格式遍历给定数组$array,每次循环,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(下一次循环中将会得到下一个单元)。
第二种格式也是遍历给定的数组$array,不同的是键名也参与了。在每次循环中将键值赋给$value,将键名赋给变量 $key
<?
//第一种
$array=array(1,2,3,4);
foreach($array as $value){
echo $value." ";
}//输出结果为:1 2 3 4
//第二种
foreach($array as $key=>$value){
echo $key."=>".$value." ";
}//输出结果为:0=>1 1=>2 2=>3 3=>4
?>
D. php foreach数组问题
1.
$array=array('1','1');
foreach($array as $k=>$v)
{
$v=200;
}
print_r($array);
在这段代码,foreach遍历给定的 array 数组。每次循环中,当前单元的值被赋给 $v,键名也会在每次循环中被赋给变量 $k。
这种赋值是一种 “拷贝” 赋值,也就是说,$v 是 array 数组中某个单元的副本,更进一步说,$v 与 array 数组中某个单元,除了值相同之外,没有其他的关系。因此, $v=200; 这句代码只是修改了 $v的值,而对array 数组没任何影响。
其实也就是编程语言中函数参数的“值传递”与“引用传递”的概念区别。
作为对比,以下的例子可能更易帮助你理解 值传递 与 引用传递 的区别:
$array=array('1','1');
foreach($array as $k=>&$v) //注意这句,$v前面多了个&
{
$v=200;
}
print_r($array);
运行结果: Array ( [0] => 200 [1] => 200 )
2.
$array=array('1','1');
foreach($array as $k=>$v)
{
$array[$v]=200;
}
print_r($array);的结果为什么又是Array ( [0] => 1 [1] => 200 ) 呢?
这个也很好理解,虽然你在foreach里遍历了数组,但你并没有用 $aray[$k] = 200 来进行赋值,而是用 $v ,
所以,当访问到第1个元素时,$v = '1',那么 $array[$v]=200 的执行,实际上也就是, $array['1']=200,也就是第2个元素被改成200。
当访问第2个元素时,还是 $v = '1',仍旧是 $array['1']=200。
所以 $array 的第2个元素被修改了2次,而第1个元素没修改过。
提示:在php语言里,数组下标从0开始计数,跟c语言一样。
E. THINKPHP foreach 循环第一个css和后面不同如何实现
foreach标签我很久没用了,忘记参数,但性质和VOLIST一样
我只是传授逻辑思维给你
<volistname="a"id="v"key="i">
<ifcondition="$ieq1">
<divclass="ab">
<imgsrc="a.jpg">
</div>
<else/>
<divclass="a">
<imgsrc="b.jpg">
</div>
</if>
</volist>
F. 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;
}
?>
G. PHP foreach 嵌套循环
第二个foreach 中的局部变量已经覆盖了第一个foreach 中的 $key,
第二个跟第一个第二个都不会影响,因为属于第一个foreach之外,所有的foreach 循环中产生的变量均是临时变量,退出循环时就会被销毁,所以第三个不会受第一个第二个影响,
把你的第二个foreach 中的$key 换个变量名就不会覆盖了,
H. php foreach 用法
楼主你的问题我也遇到过
这是为什么呢?
$a
=
array("1"=>"语文","2"=>"数学","3"=>"英语");
上面这个和下面这个是完全一样的
$a[1]="语文";
$a[2]="数学"
$a[3]=“英语”
楼主我们输出上面的数组是怎么输出的呢?
肯定是echo
$a[1];
对不对?
如果没有疑问我们继续!!!!
------------------------------
不知道foreach楼主有没有完全理解
他的格式是这样的foreach(数组名
as
下标=>值)
下标也就是上面的$a[1],这里的1就是数组的下标!
到这你应该明白了,为什么是$a[$key]这样输出
你记住不管怎么变,数组的输出方法永远是$a[1],不会是$a['语文']
I. php 怎么让foreach 循环一次
如果是循环一次的话,不需要用foreach,直接用下标或者用
array_pop--将数组最后一个单元弹出(出栈)
array_rand-- 从数组中随机取出一个或多个单元
array_shift-- 将数组开头的单元移出数组
array_slice--从数组中取出一段
例如有数组
$array = array('a', 'b', 'c');
用下标: $a = $array[0]; //$a的值是a, $array不变
array_pop: $a = array_pop(array_reverse($array)); //$a的值是a, $array的值少了a
array_rand:如果不是要取第一个,只想随机取,用这个函数
array_shift:$a =array_shift($array);//$a的值是a, $array的值少了a
array_slice: $a =array_slice($array, 0, 1); //$a的值是a, $array不变
J. php foreach输出数组只输出元素的第一个字符
foreach($list as $a)
$a 代表的是数组中的值。如果需要取得下标应该用
foreach($list as $key=>$a)
$key 代表了数组中的下标。$a 代表的是数组的值
循环输出下标的语句应该是
foreach($list as $key=>$a)
{
echo $key;
}
这样就是输出了下标。