day 1
<?php /** * @author fanyinggang * 数组测试 */ Bd_Init::init('activity'); $activity = 'labor21'; $activityConfig = Activity_Config_Activitycommon::getActivityConfigMC($activity); $tasklist = $activityConfig['tasks']; /** * array_change_key_case * 将数组中的所有键名修改为全大写或小写 !!!不改变数字索引 如果一个数组中的多个键名经过本函数后变成一样的话(例如 "seY" 和 "SEY"),最后一个值将覆盖其它的值。 * @param $array 数组 * @param CASE_UPPER 大写参数(默认小写) * @return array */ $keyCase = function () { $array = array("FirSt" => 1, "SecOnd" => 4 ,"second" => 5); //不是数组返回false return array_change_key_case($array, CASE_UPPER); }; /** * array_chunk * 将一个数组分割成多个数组,(其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size 个) 如果 size 小于 1,会抛出一个 E_WARNING 错误并返回 null。 * @param $array 数组 * @param $size 分割的每个数组大小 * @param $preserve_keys 设为 true,可以使 PHP 保留输入数组中原来的键名。如果你指定了 false,那每个结果数组将用从零开始的新数字索引。默认值是 false。 * @return array */ $chunk = function () { $array = [1,2,3,4,5,6,7,8]; return array_chunk($array, 2, true); }; /** * array_column * 返回数组中指定的一列 * @param $input 数组 * @param $column_key 需要返回的列值 可以为null(返回整个数组) * @param $index_key 指定的索引列 * @return array */ $column = function () use ($tasklist) { return array_column($tasklist, null, 'id'); }; /** * 创建一个数组 第一个数组的值作键 第二个数组的值作值 * array_combine 俩个数组个数不同会抛出警告 * @param $keys 作为键的数组 * @param $value 作为值的数组 * @return array */ $combine = function () use ($tasklist){ return array_combine(array_column($tasklist, 'id'),$tasklist); }; /** * 统计数组中所有的值 * array_count_values * @param $input * @return array (用 array 数组中的值作为键名,该值在数组中出现的次数作为值。) */ $countValues = function () { $array = array(1, "hello", 1, "world", "hello"); return array_count_values($array); }; /** * 带索引检查计算数组差集 索引和值 * array_diff_assoc * @param $array1 数组 * @param $array2 比较的数组 ... 还可以有更多数组 * @return array */ $diffAssoc = function () { $array1 = array("c" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "green", "yellow", "red"); return array_diff_assoc($array1, $array2); }; /** * 计算数组差集 值 * array_diff * @param $array1 * @param $array2 * @return array */ $diff = function () { $array1 = array("a" => "green", "blue", "red", "red"); $array2 = array("b" => "green", "yellow", "red"); return array_diff($array1, $array2); }; /** * 使用键名比较计算数组的差集 索引 * array_diff_key * @param $array1 * @param $array2 ... * @return array */ $diffKey = function () { $array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4); $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); return array_diff_key($array1, $array2); }; /** * 使用指定的键和值填充数组 * array_fill_keys * @param $keys * @param $value * @return array */ $fill = function () { $keys = array(1,2,3,4,5,6,7,8,9); return array_fill_keys($keys, 'banana'); }; /** * 使用指定的值填充数组 * array_fill */ $keyCase = call_user_func($keyCase); $chunk = call_user_func($chunk); $column = call_user_func($column); $combine = call_user_func($combine); $countValues = call_user_func($countValues); $diffAssoc = call_user_func($diffAssoc); $diff = call_user_func($diff); $diffKey = call_user_func($diffKey); $fill = call_user_func($fill); var_dump($fill);
day 2
<?php /** * array_filter 使用回调函数过滤数组的元素 * * @param 数组 $array * @param 回调函数 $callback * @param 附加参数 $mode * ARRAY_FILTER_USE_KEY - 将键名作为 callback 回调的唯一参数. * ARRAY_FILTER_USE_BOTH - 将值和键都作为参数传递给 callback 回调,而不是仅传递值 * 默认值为 0 ,只传递值作为 callback 回调的唯一参数。 * @return array */ $filter = function () { $array = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5]; return array_filter($array, function($v){ return $v & 1; }); }; /** * array_flip 交换数组中键和值 * @param array $array * @return array */ $flip = function () { $array = [1,2,3,4,5,6,7,8,9]; return array_flip($array); }; /** * array_intersect_assoc 检查数组交集 (键和值) * @param 第一个数组(要求交集的数组) $array * @param 第二个数组(要对比的数组) $array2 ... * @return array */ $intersectAssoc = function () { $array = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "green", "b" => "yellow", "blue", "red"); return array_intersect_assoc($array, $array2); }; /** * array_intersect_key 检查数组交集 (键) * @param 第一个数组(要求交集的数组) $array * @param 第二个数组(要对比的数组) $array2 ... * @return array */ $intersectKey = function () { $array = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "green", "b" => "yellow", "blue", "red"); return array_intersect_key($array, $array2); }; /** * array_intersect 检查数组交集 (值) * @param 第一个数组(要求交集的数组) $array * @param 第二个数组(要对比的数组) $array2 ... * @return array */ $intersect = function () { $array = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "green", "b" => "yellow", "blue", "red"); return array_intersect($array, $array2); }; /** * array_key_exists 检查指定的键名或者索引是否在数组中 * @param 指定的键名或索引 $key * @param 数组 $array * @return bool */ $keyExists = function () { $search_array = array('first' => 1, 'second' => 4); if (array_key_exists('first',$search_array)) { return '存在'; } else { return "不在"; } }; /** * array_key_first 获取数组第一个键 version >=7.3 * @param 数组 $array * @param 键 $key * @return 第一个键值 返回 array 的第一个键值(如果不为空),否则返回 null。 */ $keyFirst = function () { $array = ['a' => 1, 'b' => 2, 'c' => 3]; // return array_key_first($array); // === reset($array); return key($array); }; /** * array_key_last 获取数组最后一个键 version >= 7.3 * @param 数组 $array * @param 键 $key * @return 最后一个键值 返回 array 的最后一个键值(如果不为空),否则返回 null。 */ $keyLast = function () { $array = ['a' => 1, 'b' => 2, 'c' => 3]; // return array_key_last($array); // === end($array); return key($array); }; /** * array_keys 返回数组中部分或全部键名 * @param 要返回的键 $input * @param 如果指定了这个参数,只有包含这些值的键才会返回。 $search_value * @param 判断在搜索的时候是否该使用严格的比较(===) $strict * @return array */ $keys = function () { $array = array(0 => 100, "color" => "red"); return array_keys($array, 'red', true); }; /** * array_map 数组每个函数回调函数 * @param 回调函数 $callback * @param array $要运行callback的数组 * @param arrays $额外的数组 * @return array */ $map = function () { $a = [1, 2, 3, 4, 5]; $b = ['uno', 'dos', 'tres', 'cuatro', 'cinco']; return array_map(function($k, $v){ return array( $k => $v, ); },$a, $b); }; $map = call_user_func($map); $keys = call_user_func($keys); $keyLast = call_user_func($keyLast); $keyFirst = call_user_func($keyFirst); $keyExists = call_user_func($keyExists); $interscet = call_user_func($intersect); $intersectKey = call_user_func($intersectKey); $intersectAssoc = call_user_func($intersectAssoc); $filter = call_user_func($filter); $flip = call_user_func($flip); var_dump($map);die;
day 3