php函数入门学习(数组常见函数2 & 文件基础读写)

// 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);
posted @ 2024-07-16 09:30  芝麻小仙女  阅读(15)  评论(0编辑  收藏  举报