PHP常见面试题 算法与逻辑思维-模拟内置函数实现】不使用PHP函数,用方法写一个反转字符串的函数。
文章目录
一、考点
1、逻辑思维能力
2、对PHP内置函数的熟悉程度
3、字符串和数组的处理能力
二、解题方法
此类考点分为两类:
1、一类是直接说明让大家实现神呢没有的操作;
2、一类是让大家实现某种函数的功能。
因此,不仅需要大家具备一定的数据处理能力,还要熟悉 PHP内置函数的功能 是什么,常见的处理主要是对字符串和数组的处理,因此建议大家多学习PHP字符串和数组的内置函数,尝试模拟其功能,有助于提升逻辑思维和熟悉函数功能。
三、真题
1、不使用PHP函数,用方法写一个反转字符串的函数。
// abcdefg -> gfedcba
// 将字符串看做数组来处理 [a,b,c,d,e,f,g]
function str_rev($str)
{
for ($i = 0; true; $i++) {
// 判断字符串长度
if (!isset($str[$i])) {
break;
}
}
$return = '';
for ($j = $i-1; $j >= 0; $j--) {
$return .= $str[$j];
}
return $return;
}
echo str_rev('abcdefg'); // 调用函数
运行结果:
2、写一个函数,要求不使用 array_merge 完成多个数组的合并。
/*
* 多个数组的合并
* array_mer($arr1, $arr2, $arr3, ..., $arrn)
* 1、传递几个数组;
* 2、接收到所有的数组,遍历每一个参数(即每个参数都是一个数组,即遍历每个数组);
* 3、取中间的一个添加进去即可
*/
function array_mer()
{
$return = [];
// 动态获取传递进来的所有参数
$arrays = func_get_args();
// 遍历每一个参数(即数组)
foreach ($arrays as $arr) {
// 判断是否为数组,如果是,则继续循环
if (is_array($arr)) {
foreach ($arr as $val) {
$return[] = $val;
}
}
}
return $return;
}
var_dump(array_mer([1], [2,3], [4,5]));
运行结果: