PHP内置函数的实现

使用PHP实现语言一些内置函数的编写。数组、字符串的一些基本操作。

一,数组合并array_merge()。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function arr_merge($arr)
{
$return = [];
$arrs = func_get_args();
foreach ($arrs as $arr) {
if (is_array($arr)) {
foreach ($arr as $v) {
$return[] = $v;
}
}
}
return $return;
}

二,数组反转array_reverse()。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function arr_reverse($arr)
{
$len = sizeof($arr);
$left = 0;
$right = $len - 1;
while ($left < $right) {
$tmp = $arr[$left];
$arr[$left++] = $arr[$right];
$arr[$right--] = $tmp;
}
return $arr;
}

三,字符串反转strrev()。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function str_rev($str)
{
$return_str = '';
for ($i = 0; true; $i++) {
if (!isset($str[$i])) {
break;
}
}
for ($j = $i-1; $j >= 0; $j++) {
$return_str .= $str[$j];
}
return $return_str;
}

四,计算字符串长度strlen()。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function str_len($str)
{
if ($str == '') return 0;
$len = 0;
while (true) {
if ($str[$len] != null) {
$len++;
continue;
} else {
break;
}
}
return $len;
}

五,求两数组的交集array_intersect()。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function arr_intersect($arr1, $arr2)
{
$common = [];
$i = $j = 0;
$count1 = count($arr1);
$count2 = count($arr2);
while ($i < $count1 && $j < $count2) {
if ($arr1[$i] < $arr2[$j]) {
$i++;
} elseif ($arr1[$i] > $arr2[$j]) {
$j++;
} else {
$common[] = $arr1[$i];
$i++;
$j++;
}
}
return array_unique($common);
}

六,数组随机打乱shuffle()。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function arr_shuffle($arr)
{
$len = sizeof($arr);
for ($i = 0; $i < $len; $i++){
$rand_pos = mt_rand(0, $len - 1);
if ($rand_pos != $i) {
$tmp = $arr[$i];
$arr[$i] = $arr[$rand_pos];
$arr[$rand_pos] = $tmp;
}
}
return $arr;
}