php中foreach循環遍歷二維數組

最近在用tp3.2框架,在查詢的時候用到了select(),這條語句返回的是二維數組,因此在對返回的數據作處理時,遇到了些麻煩,百度了下foreach,終於用foreach解決了數據的篩選問題express

(由於不知道該怎麼設置where條件,設置只顯示Jdate字段中今天之後的數據,因此只能在select查詢後的數據中進行篩選..基礎沒大佬,真的挺麻煩)數組

進入正題框架

官方文檔中給了foreach的兩種用法ide


foreach 語法結構提供了遍歷數組的簡單方式。foreach 僅可以應用於數組和對象,若是嘗試應用於其餘數據類型的變量,或者未初始化的變量將發出錯誤信息。有兩種語法:函數

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

第一種格式遍歷給定的 array_expression 數組。每次循環中,當前單元的值被賦給 $value 而且數組內部的指針向前移一步(所以下一次循環中將會獲得下一個單元)。spa

第二種格式作一樣的事,只除了當前單元的鍵名也會在每次循環中被賦給變量 $key3d


來看第二種,代碼以下指針

 1 $a = array(
 2     "one" => array(1,2,3,4),
 3     "two" => array(5,6,7,8),
 4     "three" => array('a','b','c','d')
 5 );
 6 foreach ($a as $k => $v) {
 7     echo $k . '<br>';
 8     print_r($v);
 9     echo '<br>';
10     foreach ($a[$k] as $index => $value) {
11         echo $k . '<br>';
12         echo $index . '<br>';
13         echo $value . '<br>';
14     }
15 }

能夠看到,咱們設置了一個二維數組$a,而且設置了索引,部分輸出以下code

第一行:能夠看到$k對應的就是第二維數組的索引,好比第一條數組的「one」orm

第二行:$v對應的是第二維的數組(由於不能直接用echo輸出,在這裏使用了print_r),好比第一條數據的array(1,2,3,4),

foreach中嵌套的那一層循環中,$a[$k]表示的就是$v,這裏寫$a[$k]和寫$v輸出結果都是同樣的,由於表示的也是一樣的意思

第三行:$k仍舊是第二維數組的索引

第四行:$index是第二維數組數據的索引,隱式定義的,從0開始

第五行:$value是第二維數組的數據

接下來就是重複的輸出了

  

能夠看到foerach的確是個很強大的函數,上面是沒有定義第二位數組的數據索引的狀況,那若是第二位數組的數據也定義了索引呢,其實都同樣,foreach語句也相同

$b=array (
    '0' => Array ( 'jid' => 10,'j名' => 10,'jabstract' => 10,'jprovider' => 10,'jintroduction' => '厲害人物'),
    '1' => Array ( 'jid' => 8 ,'j名' => 8, 'jabstract' => 8, 'jprovider' => 8, 'jintroduction' => '厲害人物')
);
1 foreach ($b as $k => $v) {
2     echo $k.'<br>';
3     print_r($v);
4     echo '<br>';
5     foreach ($b[$k] as $index => $value){
6         echo $index.'<br>';
7         echo $value.'<br>';
8     }
9 }

 輸出跟上面的也是同樣的原理

 

注意使用utf-8格式,要否則輸出的時候會亂碼


 

都是些很簡單的東西啦,不過我仍是花了很久才弄明白,可能腦回路跟你們不太同樣,搜索到的文章都沒能和個人節拍

十二月了,18年最後一個月,今年過的好快

2018-12-02

相關文章
相關標籤/搜索