// 1、写一个函数,传入数组,返回数组中元素为数字且大于10的新结果数组
function getNumArr($arr) { if (!$arr) return '请传入数组'; $arr2 = array_filter($arr, function ($v) { // echo gettype($v)."<br>"; return gettype($v) === 'integer' && $v > 10; }); return $arr2; }echo "1、" . "<br>"; print_r(getNumArr(['1', '2', 3, 44])); echo "<br>"; echo "<hr>";
// 2、写一个函数,传入字串,内容为中文逗号或英文逗号分隔组成的手机号集合,判断手机号是否符合格式规范。返回数组
function getPhoneArr($str) { // 先把中文逗号替换成英文的,再统一切割成数组 $arr1 = str_replace(',', ',', $str); $arrPhone = explode(',', trim($arr1)); // 正则一次性搞定 ↓ // $arr3 = preg_split("/(,|,)/",$str); $arrReturn = array(); foreach ($arrPhone as $v) { if ($v) { $arrReturn[] = array( 'phone' => $v, 'isRealPhone' => preg_match("/^1[34578]\d{9}$/", $v) ? '手机号格式正确' : '手机号格式不符合格式规范', ); } } return $arrReturn; }echo "2、" . "<br>"; print_r(getPhoneArr('15677778888,19777778888,18688889999,')); echo "<br>"; echo "<hr>";
// 3、写一个函数,传入数组套数组,形如[["name" => "张三", "age" => 20], ["name" => "李四", "age" => 30],]
// 返回a: 年龄大于18的人 // 返回b: 女性 function getWomen($arr) { $arrAdults = array(); $arrWomen = array(); // 还是foreach节能,只要循环一次 foreach ($arr as $v) { if ($v && $v["age"] && $v["age"] >= 18) { $arrAdults[] = $v; } if ($v && $v["gender"] && $v["gender"] === 'woman') { $arrWomen[] = $v; } } // $arrAdults = array_filter($arr, function($v){ // return $v && $v["age"] && $v["age"] >= 18; // }); // $arrWomen = array_filter($arr, function($v){ // return $v && $v["gender"] && $v["gender"] === 'woman'; // }); return array( "a" => $arrAdults, "b" => $arrWomen, ); } echo "3、" . "<br>"; print_r(getWomen([["name" => "张美丽", "age" => 20, "gender" => 'woman'], ["name" => "李四娃", "age" => 30, "gender" => 'man'], ["name" => "李四美", "age" => 3, "gender" => 'woman']])); echo "<br>"; echo "<hr>";// 4、写一个函数,传入人名、数组套数组,形如[["name" => "张三", "age" => 20], ["name" => "李四", "age" => 30],]
// 判断人名是否在数组中 function getHaveName($str, $arr) { $arr1 = array_column($arr, 'name'); // print_r($arr1); $isInArr = in_array($str, $arr1); return $isInArr ? $str . '在数组中' : $str . '不在数组中'; } echo "4、" . "<br>"; echo (getHaveName("李", [["name" => "张三", "age" => 20], ["name" => "李四", "age" => 30],])); echo "<br>"; echo "<hr>";// 5、有一篇文章,里面会有逗号和句号。删除其中重复的句子 function getNoRepeat($str) { $arr = explode('。', trim($str)); // 移除数组中的重复值 $uniqueArr = ($arr); // 把字符串用句号重新拼接起来 $output = implode('。', $uniqueArr); return $output; } echo "5、" . "<br>"; echo getNoRepeat("李四说他是个神经病,我认为不是。李四说他是个神经病,我认为不是。李四说他是个神经病,我认为不是,啊啊啊啊啊啊啊啊"); echo "<br>"; echo "<hr>"; ------
// 今日作业:
// 读取表格内容,转化为二维数组:大数组套小数组
// 每个大数组都是一行,小数组形如:array("xx订单号" => "xxxx", "IOS订单号" => "XXXX")
// 即将第一行表头作为小数组的每个元素的key
$a = file_get_contents("data.csv"); $aa = mb_convert_encoding($a, 'UTF-8'); // 先按行分开数据 $data1 = explode("\n", trim($aa)); $$keys = array(); $values = array();$index = 0; foreach ($data1 as $v) { // 分开列名和数据 if ($index === 0) { $keys = explode(",", trim($data1[0])); } else { $values[] = explode(",", trim($data1[$index])); } $index++; }
$list = array(); // 遍历每一行数据,改造成键值对 foreach ($values as $v) { $line = array(); $index2 = 0; foreach ($keys as $v2) { $line[$v2] = $v[$index2]; $index2++; } $list[] = $line; }
// echo "组装好的数据" . "<br>"; // var_export($list); // var_export("<hr>");
// 作业二:
// 将上述数组,还原为上图表格,并写入新文件
// 获取列名作为第一行数据 $keys2 = implode(',', array_keys($list[0])); $values2 = array(); $index3 = 0; foreach ($list as $v) { $values2[] = implode(',', array_values($v)); $index3++; } $list2 = array(); $list2[] = $keys2; foreach ($values2 as $v) { $list2[] = $v; } $valuesString = implode("\n", $list2); file_put_contents("new_data.csv", $valuesString); // echo "list2" . "<br>"; // var_export($valuesString); // var_export("<hr>");// file_put_contents("111", $a, FILE_APPEND); 标签:arr,函数,读写,echo,数组,array,php,age,name From: https://www.cnblogs.com/nangras/p/18304522