刚进公司没多久,现在还在熟悉业务和代码的阶段,公司用的laravel框架,我在看别人写的代码时发现了他用到了extract()这个函数,原谅我学艺不精,刚开始我以为这是laravel中方法(因为我对laravel不太熟),后来请教了代码作者,才知道extract()这个函数原来是php内置的函数,于是我就去文档里找了下,学习了一下。
extract()这个方法官方的的翻译是:从数组中将变量导入到当前的符号表。我觉得就是将数组中的下标,定义为对应的变量,下标对应的值,赋给对应的变量。
例如$arr= ['name' => '张三' , 'age' => 24], 经过extract($arr)之后,就变成{$name = '张三' , $age = 24;}了。
extract()可以有三个参数,第一个是必选的,类型是数组(不传数组,怎么把数组变成对应的 变量 = 值 的格式)。第二个参数是可选的类型有好几个,主要是为了解决变量冲突的,就上面的例子,如果之前已经给$name 赋过值,用此函数第二个参数就可以解决,你想覆盖之前的值就传递 EXTR_OVERWRITE , 如果不想覆盖,可以传递EXTR_SKIP,就可以了。还有其他情况,如果你只想取前面定义过的变量,可以用EXTR_IF_EXISTS 这个值。还可以给变量加上前缀(如果需要的话),这个前缀就是第三个参数。
我觉得extract()这个函数在从前端获取数据的时候很方便,只是安全性我不太确定,等以后知道了在补充。