牛逼的函数!

1、serialize(); 函数序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和结构不会改变
使用场景:当遇到一对多的场景时,多的数据结构不复杂的情况,可使用该函数记性存储,减少了表的关联;

2、http_build_query(); 把二维数组转化成url请求时的参数
使用场景:拼接url参数的时候使用

3、array_unique($arr, SORT_REGULAR); 把二维数组中的重复值去掉
使用场景:二维数组去重

4、使用 srtcmp() 函数和 strcasecmp() 函数分别对两个字符串按字节进行比较
案例:

 $str3 = "phpcn";                      // 定义字符串常量
 $str4 = "PHPCN";                      // 定义字符串常量
 echo strcmp($str3,$str4);             // 注意该函数区分大小写,注:0相等,!=0 不相等
 echo strcasecmp($str3,$str4);          //该函数不区分大小写,注:0相等,!=0 不相等
 结果为:0 1 0

参考:PHP字符串比较函数详解

5、get_object_vars(Object); 对象转换成数组

6、array_merge_recursive(); 将两个数组合并在一起,注意,与array_merge()函数是不一样的,array_merge()的两个数组有重复项时会覆盖掉,而array_merge_recursive()则不会。

7、$argv[1]; 接收命令行启动php脚本时传递的参数,1指DOS命令行中执行程序名后的第一个字符串
使用场景:接收命令行执行php脚本的传来的参数

8、microtime(true); 返回当前 Unix 时间戳的微秒数
使用场景:计算脚本的执行时间

9、array_multisort(); 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
使用场景:对一个多字段的二维数组进行了排序

10、array_chunk(); 函数把一个数组分割为新的数组块。
使用场景:处理大数组的时候,例如sql的in查询的时候,数组范围越大查询效率越慢,所以要拆分进行多次查询。

11、urlencode(); 转化成url可识别的格式,可用urldecode()反解。
12、addslashes(); 单双引号、反斜线及NULL加上反斜线转义。
13、array_reverse(); 数组反转,以相反的元素顺序返回数组。
14、number_format() 函数通过千位分组来格式化数字。
15、is_numeric() 函数用于检测变量是否为数字或数字字符串。
16、截取数组指定的内容:array_slice(‘你的数据’ , 从第几条开始取 , 取几条)
17、结果强制转化成对象(接口对接时使用):json_encode ( $arr, JSON_FORCE_OBJECT );
18、数字格式化:

$num="3";
$format="%06d";  //6是位数,这里有6位数,0是不足6位的补0
$a=sprintf($format,$num);
echo $a;

输出结果为 000003

19、file_get_content 发送请求发送Get、Post请求

public function _send_image($deviceid, $image_url)
  {
    $data = http_build_query([
      'image' => $image_url
    ]);
    
    $time = time();
    $key = md5($time . "|" . $deviceid);
    $url = "https://*******/home/printimage?time=${time}&deviceid=${deviceid}&key=${key}";
    $context = stream_context_create(array(
      'http' => array(
        'method' => 'POST',
        'header' => "Content-type:application/x-www-form-urlencoded;charset=UTF-8;Content-Length:" . strlen($data),
        'timeout' => 10,
        'content' => $data
      )
    ));
    return file_get_contents($url, false, $context);
  }

20、浮点数比较 bccomp

if (bccomp($fee1, $fee2) != 0) {
     echo '价格错误';
}else{
	echo '价格相等';
}

21、array_merge和array+的区别分析

1)如果键名为字符,且键名相同,array_merge()后面数组元素值会覆盖前面数组元素值
2)如果键名为字符,且键名相同,数组相加会将最先出现的值作为结果,后面键名相同的会被抛弃
3)如果键名为数字,array_merge()不会进行覆盖,会格式化键名并保留所有键值
4)如果键名为数字,数组相加会将最先出现的值作为结果,后面键名相同的会被抛弃
5)获取字符键名相同值不同的两个数组值集合,可以使用函数:array_merge_recursive
参考:https://www.cnblogs.com/phpper/p/9144125.html
在牛客网上,与 C++ 函数编程相关的题目通常涉及函数定义、调用、参数传递、递归、函数重载、内联函数等多个方面。以下是一些常见的题型及示例解析: 1. **函数定义与调用** 例如,编写一个函数实现字符串反转的功能。函数接受一个字符串参数并返回反转后的字符串。以下是一个示例实现: ```cpp #include <iostream> #include <string> std::string reverseString(std::string s) { int left = 0; int right = s.length() - 1; while (left < right) { std::swap(s[left], s[right]); left++; right--; } return s; } int main() { std::string s = "Hello, World!"; std::string reversed = reverseString(s); std::cout << "Reversed string: " << reversed << std::endl; return 0; } ``` 这种题目考查的是函数的基本定义与调用机制,以及对字符串操作的理解 [^3]。 2. **内联函数与虚函数的冲突** 内联函数的目的是在编译期展开,而虚函数是为了实现运行时的动态绑定。这两者本质上是矛盾的。因此,即使将内联函数声明为虚函数,编译器也不会进行内联展开,而是将其当作普通函数来处理。这表明,虽然内联函数可以声明为虚函数,但这样会失去内联的意义 [^2]。 3. **函数参数传递与空间效率** 一些题目可能要求动态分配数组,并通过函数进行操作。例如,在堆区动态分配数组,然后调用求和函数返回结果。这种题目考查的是对堆内存管理以及函数间数据传递的理解。通过动态分配数组,可以灵活地处理不同大小的数据集,从而在牺牲一定空间的情况下提升时间效率 [^1]。 4. **字符串替换函数** 例如,编写一个函数将字符串中的空格替换为"%20"。这类题目常用于考查字符串操作以及函数返回值的处理方式。以下是一个示例代码: ```cpp class Solution { public: std::string replaceSpace(std::string s) { std::string res; for (char c : s) { if (c == ' ') { res += "%20"; } else { res += c; } } return res; } }; ``` 这种题目通常要求在函数中完成特定的字符串处理逻辑,并通过主函数进行测试 [^4]。 5. **位运算符的使用** 一些题目涉及位运算符的使用,例如对整型或字符型数据进行位操作。这些运算符可以直接对数据的二进制位进行操作,常用于优化性能或实现特定算法。例如,使用位运算符实现两个整数的交换而不使用额外变量: ```cpp void swapUsingBitwise(int &a, int &b) { a = a ^ b; b = a ^ b; a = a ^ b; } ``` 这类题目考查的是对位运算的理解及其在实际问题中的应用 [^5]。 这些题目涵盖了 C++ 函数编程中的多个重要知识点,包括函数定义、调用、参数传递、内联函数、虚函数、字符串处理以及位运算等。通过这些练习,可以加深对 C++ 函数机制的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值