Remove extract from function 时间:2020-08-04 作者:JoaMika 我使用此代码以便用户可以输入[photo no="1"], [photo no="2"], [photo no="3"] 等在他们的岗位上。但是我听说extract 是一个不安全的函数。如何修改此代码以删除extract? function photo_shortcode($atts){ extract(shortcode_atts(array( \'no\' => 1, ), $atts)); $no = is_numeric($no) ? (int) $no : 1; $images = get_field(\'fl_gallery\'); if ( !empty( $images ) ) { $image = $images[$no]; return \' $image[\'url\'] \' ; } } 2 个回复 最合适的回答,由SO网友:Sally CJ 整理而成 很简单:只需指定shortcode_atts() (它是一个数组)访问变量,并使用它访问快捷码属性,访问方式与访问任何其他数组中的项的方式相同:$atts = shortcode_atts( array( \'no\' => 1, ), $atts ); // Use $atts[\'no\'] to get the value of the "no" attribute. $no = is_numeric( $atts[\'no\'] ) ? (int) $atts[\'no\'] : 1; SO网友:mozboz extract 将数组中的变量引入局部变量。在你的例子中,它唯一的变量是$no, 因此,您可以使用以下代码替换extract,这将执行相同的操作:替换:extract(shortcode_atts(array( \'no\' => 1, ), $atts)); 使用:$arr = shortcode_atts(array( \'no\' => 1, ), $atts); $no = $arr[\'no\']; 文章导航