實例
從陣列中移除元素,並用新元素取代它:
<?php $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $a2=array("a"=>"purple","b"=>"orange"); array_splice($a1,0,2,$a2); print_r($a1); ?>
定義和用法
array_splice() 函數從數組中移除選定的元素,並用新元素取代它。函數也會傳回被移除元素的陣列。
提示:如果函數沒有移除任何元素(length=0),則替代陣列將從 start 參數的位置插入(請參閱實例 2)。
註解:不保留替代陣列中的鍵名。
語法
array_splice(array,start,length,array)
參數 | #描述 |
array | 必需。規定數組。 |
start | 必要。數值。規定刪除元素的開始位置。 0 = 第一個元素。 如果該值設定為正數,則從陣列中該值指定的偏移量開始移除。如果該值設定為負數,則從陣列末端倒數該值指定的偏移量開始移除。 -2 意指從陣列的倒數第二個元素開始。 |
length | 可選。數值。規定被移除的元素個數,也是被傳回數組的長度。 如果該值設定為正數,則移除該數量的元素。如果該值設定為負數,則移除從 start 到陣列末端倒數 length 為止中間所有的元素。如果該值未設置,則移除從 start 參數設定的位置開始直到陣列末端的所有元素。 |
array | 可選。規定帶有要插入原始數組中元素的數組。如果只有一個元素,則可以設定為字串,不需要設定為陣列。 |
技術細節
#傳回值: | 傳回包含被提取元素的陣列。 |
PHP 版本: | 4+ |
更多实例
实例 1
与本页前面部分的实例相同,但是输出返回的数组:
<?php $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $a2=array("a"=>"purple","b"=>"orange"); print_r(array_splice($a1,0,2,$a2)); ?>
实例 2
带有设置为 0 的 length 参数:
<?php $a1=array("0"=>"red","1"=>"green"); $a2=array("0"=>"purple","1"=>"orange"); array_splice($a1,1,0,$a2); print_r($a1); ?>
在array_splice中,有这么一段代码:
/* Don't create the array of removed elements if it's not going * to be used; e.g. only removing and/or replacing elements */ if (return_value_used) { // 如果有用到函数返回值则创建返回数组,否则不创建返回数组 int size = length; /* Clamp the offset.. */ if (offset > num_in) { offset = num_in; } else if (offset < 0 && (offset = (num_in + offset)) < 0) { offset = 0; } /* ..and the length */ if (length < 0) { size = num_in - offset + length; } else if (((unsigned long) offset + (unsigned long) length) > (unsigned) num_in) { size = num_in - offset; } /* Initialize return value */ array_init_size(return_value, size > 0 ? size : 0); rem_hash = &Z_ARRVAL_P(return_value); }
array_splice函数返回的是被删除的切片。这段代码的意思是,如果array_splice需要返回值,那么才创建返回数组,否则不创建,以免浪费空间。这也是一个编程小技巧,仅当需要的时候才返回。比如在函数中使用$result = array_splice(...),那么return_value_used就是true。
以上是php把數組中的指定元素去掉並用其它值取代的函數array_splice()的詳細內容。更多資訊請關注PHP中文網其他相關文章!