案例源码:
<?php function smsf(){ return 'xc'; } function to_oss($obj, $ject=null) { if( is_object($obj) ) { $sms = smsf(); $upAction = function($field, $name, $tmpName) use($sms, $ject) { if($field == $sms) return $sms.'99'; return $field; }; $files = ['logo'=>'thumb.jpg','thumb'=>'lo.go.png','xc'=>'logo.jpg']; $data = []; foreach($files as $k => $v){ $str = $upAction($k, $v, $v); $data[] = $obj($str).strtolower(strrchr($v, '.')); } return $data; } } $upload = to_oss(function($key){ switch($key){ case 'thumb': $path = 'thumb11111111'; break; case 'logo': $path = 'logo22222222'; break; case 'xc99': $path = 'xc9922222222'; break; } return $path; }); # Array ( [0] => logo22222222.jpg [1] => thumb11111111.png [2] => xc9922222222.jpg ) print_r($upload); ?>
另外可能需求用到的PHP函数:
extract():
定义和用法
extract() 函数从数组中将变量导入到当前的符号表。
该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。
第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。
该函数返回成功导入到符号表中的变量数目。
语法
extract(array,extract_rules,prefix)
参数 | 描述 |
---|---|
array | 必需。规定要使用的数组。 |
extract_rules | 可选。extract() 函数将检查每个键名是否为合法的变量名,同时也检查和符号表中已存在的变量名是否冲突。对不合法和冲突的键名的处理将根据此参数决定。 可能的值:
|
prefix | 可选。请注意 prefix 仅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。如果附加了前缀后的结果不是合法的变量名,将不会导入到符号表中。 前缀和数组键名之间会自动加上一个下划线。 |
技术细节
返回值: | 返回成功导入到符号表中的变量数目。 |
PHP 版本: | 4+ |
更新日志: | extract_rules 的值 EXTR_REFS 是在 PHP 4.3 中新增的。 extract_rules 的值 EXTR_IF_EXISTS 和 EXTR_PREFIX_IF_EXISTS 是在 PHP 4.2 中新增的。 自 PHP 4.0.5 起,该函数返回成功导入到符号表中的变量数目。 extract_rules 的值 EXTR_PREFIX_INVALID 是在 PHP 4.0.5 中新增的。 自 PHP 4.0.5 起,extract_rules 的值 EXTR_PREFIX_ALL 也包含数字变量。 |
例子1:使用所有参数
<?php $a = "Original"; $my_array = array("a" => "Cat", "b" => "Dog", "c" => "Horse");extract($my_array, EXTR_PREFIX_SAME, "dup"); echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a"; ?>
array_walk:
定义和用法
array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。
注释:您可以通过把用户自定义函数中的第一个参数指定为引用:&$value,来改变数组元素的值(参见实例 2)。
提示:如需操作更深的数组(一个数组中包含另一个数组),请使用 array_walk_recursive() 函数。
语法
array_walk(array,myfunction,userdata...)
参数 | 描述 |
---|---|
array | 必需。规定数组。 |
myfunction | 必需。用户自定义函数的名称。 |
userdata,... | 可选。规定用户自定义函数的参数。您能够向此函数传递任意多参数。 |
说明
array_walk() 函数对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。
典型情况下 myfunction 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。
如果 myfunction 函数需要的参数比给出的多,则每次 array_walk() 调用 myfunction 时都会产生一个 E_WARNING 级的错误。这些警告可以通过在 array_walk() 调用前加上 PHP 的错误操作符 @ 来抑制,或者用 error_reporting()。
注释:如果回调函数需要直接作用于数组中的值,可以将回调函数的第一个参数指定为引用:&$value。(参见例子 3)
注释:将键名和 userdata 传递到 myfunction 中是 PHP 4.0 新增加的。
技术细节
返回值: | 如果成功则返回 TRUE,否则返回 FALSE。 |
PHP 版本: | 4+ |
例子1:设置一个参数
<?php function myfunction($value,$key,$p) { echo "$key $p $value<br>"; } $a=array("a"=>"red","b"=>"green","c"=>"blue");array_walk($a,"myfunction","has the value"); ?>
例子2:更改一个数组元素的值(请注意 &$value)
<?php function myfunction(&$value,$key) { $value="yellow"; } $a=array("a"=>"red","b"=>"green","c"=>"blue");array_walk($a,"myfunction"); print_r($a); ?>
转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/161.html
1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意