遍歷PHP陣列的6種方式
在PHP的日常操作中,陣列是最常出現的結構,而我們幾乎每天都在處理陣列相關的內容。那麼問題來了,你一般怎麼遍歷並處理陣列。
1、foreach
很熟悉吧,是不是你的最愛?
$arr = ['a', 'b', 'c']; foreach ($arr as $key => $value) { $arr[$key] = $value . '_i'; } print_r($arr); // ['a_i', 'b_i', 'c_i'];
2、array_map
使用匿名函式的方式,處理陣列裡的每個元素。遍歷完成後返回一個新的陣列
$arr = ['a', 'b', 'c']; $arr = array_map(function ($item) { return $item . '_i'; }, $arr); print_r($arr); // ['a_i', 'b_i', 'c_i'];
你可以同時處理多個陣列
$arr_1 = ['a', 'b', 'c']; $arr_2 = ['你', '好', '嗎', '原', '罪']; // $arr_n = [...]; $arr = array_map(function ($item_1, $item_2) { return $item_1 . '_' . $item_2 . '_i'; }, $arr_1, $arr_2); print_r($arr); // ['a_你_i', 'b_好_i', 'c_嗎_i', '_原_i', '_罪_i']
是的,遍歷的次數以最長的陣列為準。
遍歷3次之後,$arr_1 其實是完成了的,所以之後 $item_1 的值都是null
3、array_walk
以引用傳遞的形式遍歷你的陣列,沒有返回值,而且只能處理一個陣列。
$arr = ['a', 'b', 'c']; array_walk($arr, function (&$item) { $item = $item . '_i'; }); print_r($arr); // ['a_i', 'b_i', 'c_i'];
注意到 &$item 了嗎,是的,多了個&,代表著你的形參是以引用傳遞接收資料的。你要做的就是想辦法改變這個引數。
假如你處理的是二維陣列,處理方式也是萬變不離其宗的。
$arr = [ ['name' => 'a'], ['name' => 'b'], ['name' => 'c'] ]; array_walk($arr, function (&$item) { $item['name'] = $item['name'] . '_i'; }); print_r($arr); // [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];
4、for
這應該是超級通用的語法了
$arr = ['a', 'b', 'c']; for ($i = 0; $i < count($arr); ++$i) { $arr[$i] = $arr[$i] . '_i'; } print_r($arr); // ['a_i', 'b_i', 'c_i'];
不推薦使用。它的效率比不上foreach。而且寫法上比foreach略繁瑣。
5、each
哈哈,這個函式在PHP7.2已經被廢棄了@deprecated,而且感覺特別古老的書寫方式。這種寫法的執行效率也不行,新手應該直接放棄。
$arr = ['a', 'b', 'c']; while (list($key, $value) = each($arr)) { $arr[$key] = $value . '_i'; } print_r($arr); // ['a_i', 'b_i', 'c_i'];
6、reset
準確的講並不止reset一個函式,需要組合多個內建函式,平常寫程式碼基本是用不上的
$arr = ['a', 'b', 'c']; // reset() 指標切換到頭部,其實預設就是指向開頭,可以忽略這句 reset($arr); // current() 獲取當前指標的元素值 while ($value = current($arr)) { // key() 獲取當前指標的元素下標 $arr[key($arr)] = $value . '_i'; // next() 指標移到下一個 next($arr); } print_r($arr); // ['a_i', 'b_i', 'c_i'];
還有什麼遍歷方式,歡迎補充。覺得對你有用就點個贊吧
相關文章
- php手冊 php陣列的遍歷有哪幾種方式?php陣列如何遍歷?PHP陣列
- php陣列中常用的多種遍歷方式PHP陣列
- c++遍歷陣列的多種方式C++陣列
- PHP二維關聯陣列的遍歷方式PHP陣列
- 在PHP中陣列遍歷的三種方法PHP陣列
- php遍歷關聯陣列的三種方法PHP陣列
- js 遍歷陣列方式JS陣列
- php陣列迴圈遍歷PHP陣列
- 遍歷陣列的幾種方法陣列
- iOS開發中陣列常用的五種遍歷方式iOS陣列
- JS中遍歷陣列、物件的方式JS陣列物件
- ***PHP遍歷陣列的方法foreachPHP陣列
- php 陣列遍歷奇怪現象PHP陣列
- ios 遍歷陣列的八種方法iOS陣列
- 陣列遍歷陣列
- php陣列原理遍歷原理揭祕PHP陣列
- JS中陣列的遍歷方法(3種)JS陣列
- 有關js各種陣列遍歷JS陣列
- 前端技巧:遍歷陣列都有哪些方式呢?前端陣列
- 陣列遍歷方法陣列
- 遍歷陣列物件陣列物件
- 陣列的三種宣告方式總結、多維陣列的遍歷、Arrays類的常用方法總結陣列
- 如何從效能角度選擇陣列的遍歷方式陣列
- OC中陣列、字典的遍歷的三種方法陣列
- php中使用while遍歷二維陣列的方法PHPWhile陣列
- php合併陣列的幾種方式PHP陣列
- java陣列遍歷的方法Java陣列
- 物件和陣列的遍歷物件陣列
- Golang的陣列初始化方式及for-range遍歷Golang陣列
- **PHP二維陣列遍歷時同時賦值PHP陣列賦值
- Jvascript陣列迭代,遍歷的方法陣列
- JAVA多維陣列的遍歷Java陣列
- 陣列常見的遍歷迴圈方法、陣列的迴圈遍歷的效率對比陣列
- JavaScript遍歷陣列詳解JavaScript陣列
- JavaScript 的 4 種陣列遍歷方法: for VS forEach() VS for/in VS for/ofJavaScript陣列
- java陣列如何遍歷全部的元素Java陣列
- for in語句遍歷陣列中的元素陣列
- js如何遍歷陣列中的元素JS陣列