1 array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] ) : array
array_slice()這個從陣列中取出一段的函式,需要傳遞一些整型數字來指明使用者需要目標陣列中的哪一個段,
當第二引數 $offset ,和第三引數 $length 長度都是整型正整數的時候,用環形角度理解陣列索引還是線段角度理解陣列的索引,事實上沒什么太大區別,
但當這兩個引數中有一個是整型負整數時,用環形角度來理解陣列索引更為統一,
人類理解抽象事物總是設法與其腦海中建立的形象模型關聯,于是我們首先得有下面圖中的這兩種概念,圖中的數字代表了陣列的索引,
第一幅圖是環形,起點為0,順時針為正方向,逆時針為負方向

第二幅圖是線段形,起點為0,朝右為正方向,朝左為負方向

然后再考慮這兩種形象模型在具體的例子中的表現,
第一種情況:
1 $arr_long = [1, 2, 3, 4, 2, 6, 2, 8];//沒有貼上列印輸出,自然不是忘了 2 var_dump(array_slice($arr_long, 2, 3));
環形和線段形都可以這樣描述:從偏移量為2的地方,向正方向截取3個長度,然后回傳這一段所組成的陣列,
第二種情況:
1 $arr_long = [1, 2, 3, 4, 2, 6, 2, 8];//沒有貼上列印輸出,自然不是忘了 2 var_dump(array_slice($arr_long, -2, 3));//這種情況下回傳的陣列只有兩個元素
環形描述:從偏移量為-2的地方,向正方向截取3個長度,然后回傳這一段所組成的陣列,(偏移量-2,只是為了理解而統一化的說法,具體有沒有類似的編程概念,該問誰呢?)
線段形描述:從倒數第二個元素,向正方向截取3個長度,然后回傳這一段所組成的陣列,
第三種情況:
1 $arr_long = [1, 2, 3, 4, 2, 6, 2, 8];//沒有貼上列印輸出,自然不是忘了 2 var_dump(array_slice($arr_long, 2, -3));
環形描述:從偏移量為2的地方,向著正方向一直截到偏移量為-3的地方(不包括偏移量為-3的元素),然后回傳這一段所組成的陣列,(偏移量-3,這樣的說法目的同上,)
線段形描述:從偏移量為2的地方,向著正方向一直截到倒數第三個元素的地方(不包括倒數第三個元素),然后回傳這一段所組成的陣列,
推論:
從環形的角度來理解陣列,更為的方便快捷,因為環形描述的套路是一致的,
備注:
雖然還有類似這樣的情況:
1 $arr_long = [1, 2, 3, 4, 2, 6, 2, 8]; 2 var_dump(array_slice($arr_long, -2, -3));
輸出為:
1 [Running] php "d:\workspace\test.php" 2 D:\workspace\test.php:3: 3 array(0) { 4 } 5 6 [Done] exited with code=0 in 0.512 seconds
有哪個家伙會自找麻煩,用這種方法搞來搞去?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/134865.html
標籤:PHP
上一篇:PHP MySQLi 參考手冊
