SPI 机制-插件化扩展功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SPI 机制-插件化扩展功能相关的知识,希望对你有一定的参考价值。

删除数组元素

unset

unset删除数组元素,不会重建索引

//demo1
$arr = [1, 2, 3];
array_push($arr, 4);
unset($arr[count($arr) - 1]);
array_push($arr, 5);
print_r($arr); //Array ( [0] => 1 [1] => 2 [2] => 3 [4] => 5 )

//demo2
$arr = [1, 2, 3];
unset($arr[1]);
print_r($arr); //Array ( [0] => 1 [2] => 3 )

array_splice

删除一部分元素,并且可以用指定元素替代,会重建索引(关联数组无效),详情参看文档

$arr = [1, 2, 3];
array_splice($arr, 1, 1);
print_r($arr); //Array ( [0] => 1 [1] => 3 )

array_pop

删除最后一个元素(出栈),会重建索引

$arr = [1, 2, 3];
array_pop($arr);
array_push($arr, 4);
print_r($arr); //Array ( [0] => 1 [1] => 2 [2] => 4 )

array_shift

删除第一个元素,会重建索引

$arr = [1, 2, 3, 4];
array_shift($arr);
print_r($arr); //Array ( [0] => 2 [1] => 3 [2] => 4 )

array_diff

删除指定的一些元素,实际上求数组的差集,可以理解为第一个数组减去后面数组得到的数组

$arr = [‘a‘, ‘b‘, ‘c‘, ‘b‘, ‘d‘];
$new_arr = array_diff($arr, [‘b‘, ‘c‘]);
print_r($new_arr); //Array ( [0] => a [4] => d )

array_diff_key

根据key删除一些元素,实际上根据key求数组差集,和array_diff类似

$arr = [
  ‘a‘ => 1,
  ‘b‘ => 2,
  ‘c‘ => 3,
  ‘d‘ => 4
];
$arr1 = [
  ‘b‘ => 23,
  ‘d‘ => 33
];

$new_arr = array_diff_key($arr, $arr1);
print_r($new_arr); //Array ( [a] => 1 [c] => 3 )

以上是关于SPI 机制-插件化扩展功能的主要内容,如果未能解决你的问题,请参考以下文章

从ExtensionLoader理解Dubbo扩展机制

Spi,微内核与插件化

Dubbo SPI源码分析

dubbo spi扩展实现机制javasist

Java:SPI机制

深入了解JDK SPI的源码分析及实践使用方式,看完对你应该有所帮助