php數組最大值 php數組追加元素

php數組追加元素,php數組最大值,金華號帶你了解相關信息 。
接著我們這種系列的文章說 。本文我們聊一聊 PHP 數組,怎么樣在任意地點插入新元素 。因為內置函數并沒有提供類似 array_insert(&$array, $pos, $items) 的函數,所以我們試著動手解決 。

php數組最大值 php數組追加元素

文章插圖
學習時間標準的實現方法,是要用 array_splice,該函數的用法:
array array_splice( array &$input, int $offset[, int $length = 0[, mixed $replacement]] )
把 input 數組中由 offset 和 length 指定的單元去掉,如果提供了 replacement 參數,則用之中的單元取代 。
下面是舉例說明:$original = array( 'a', 'b', 'c', 'd', 'e' );
$inserted = array( 'x' ); // $inserted 并不一定是數組
array_splice( $original, 3, 0, $inserted ); // 在索引 3 地點插入
// $original 內容為 a b c x d e
有幾個關鍵點各位需要小心,靈巧使用 $offset, $length, $replacement 三個參數,應該組裝成厲害的功能 。
對于偏移地點 $offset:如果 offset 為正,則從 input 數組中該值指定的偏移量開始移除 。
如果 offset 為負,則從 input 末尾倒數該值指定的偏移量開始移除 。
對于代替的長度 $length:如果省略 length,則移除數組中從 offset 到結尾的全部部分 。
如果指定了 length 并且為正值,則移除這么多單元 。
如果指定了 length并且為負值,則移除從 offset 到數組末尾倒數length 為止中間全部的單元 。
在編程中,當給出了replacement 時要移除從 offset 到數組末尾全部單元時,用 count($input) 作為 length 。例如像下面這種示例:
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input = array("red", "orange")
特別需要小心的是 $replacement 參數:如果給出了 replacement 數組,則被移除的單元被此數組中的單元替代 。
如果 offset 和 length 的配合結果是不會移除所有值,則 replacement 數組中的單元將被插入到 offset 指定的地點 。小心代替數組中的鍵名不保存 。
如果用來代替 replacement 只有一個單元,那么不需要給它加上array(),除非該單元本身只是一個數組、一個對象或者 NULL 。
親手造輪子上一節的解決問題方案堪稱標準 。一些朋友還是要忍不住造輪子 ?!皸l條大道通羅馬”,肯定有不止一種方法實現要求 。下面是另外一種方法:
$a = array(1, 2, 3, 4);
$b = array_merge(array_slice($a, 0, 2), array(5), array_slice($a, 2));
// $b = array(1, 2, 5, 3, 4)
使用 array_slice 函數對原數組切片,一分為二,之后使用 array_merge 拼接3個部分 。完美!
上面的代碼,在使用 array_merge 后悔丟棄原數組的索引關系 。如果要保存,使用 + 連接:
$b = array_slice($a, 0, 2) + array(5) + array_slice($a, 2);
【php數組最大值 php數組追加元素】這樣就應該了 。
換湯不換藥,如果給類添加一個方法,或者添加一個助手函數,大自然是最好的 。下面是封裝函數 。
function array_insert(&$array, $value, $index)
{
return $array = array_merge(array_splice($array, max(0, $index - 1)), array($value), $array);
}
寫在末尾本文講解了一個功能豐盛的 array_splice 函數,讓各位領略了參數的靈巧使用所弄來的方便 。如果你總是需要這樣的操作,麻溜地寫到全局助手函數里吧 。
Happy coding :_)

    推薦閱讀