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;
}
這樣就是輸出了下標。