php开发工程师 前两次面试总结 - 纯技术知识点

1. foreach一个数组后,原始数组并不会发生改变。php默认按值传递,同时也支持其它传值方式。

2. 打印一个未声明的变量,错误消息:Notice: Undefined variable.

    打印数组中不存在的索引的值,错误消息:Notice: Undefined offset.

    Notice和Warning错误类型不会影响脚本的继续执行。

3. 

<?php
$a = 1;
$b = 2;
$c = 3;
//不可以用多个非等号(">"、"<"、"!=")连接
if ($c>$b>$a) {
	echo 'true';
}else {
	echo 'false';
}//Parse error: syntax error, unexpected '>'


//赋值操作符会在成功时返回所赋的值。
echo $a = $b; //2

//echo不是函数,(所以)无返回值
echo (echo ($a = $b));//Parse error: syntax error, unexpected 'echo' (T_ECHO)

//连续使用赋值号,所有变量的值都等于最右侧(变量的)值。
$a = $b = $c;
echo $a . $b . $c;//333

4. PHP中,单引号与双引号的主要区别在于转义。如果字符串中含有变量或转义字符,必须用双引号。其它情况下,单引号会更快一些。

同时,在数组中,如果index是字符串时,正确的使用方式应该是$array["$key"],而不是$array[key],因为不正确的写法会使PHP解析器认为key是一个常量,进而先判断常量是否存在,不存在时才以“key”作为下标带入表达式中,同时出发错误事件,产生一条 Notice级错误。

5. fopen()支持的协议类型有哪些?不支持mail协议,不过mail可以用imap_open()或者 mail()来打开或收取。

6. RegEx:\w \d \s ? + * 先划分成小部分,再写。

7. 自动生成一定位数的密码。

<?php
function Random_Password($length){
	srand(date('s'));
	$chars = 'ABCDEFGhijklmNOPQRSTuvwxYz';//给定字符串
	$string = '';
	while (strlen($string) < $length) {
		//在空字符串长度小于给定参数时,使其增加。每次从$chars中取出一位。
		$string .= substr($chars,(rand()%(strlen($chars))),1);
	}
	return ($string);
}

echo Random_Password(8);

//涉及函数:
srand([$seed]);//初始化随机数发生器,此时并未生成随机数。
//自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现在已自动完成。
rand([$min,$max]);//随机生成一个正整数,参数可选范围。
strlen($string);//返回字符串长度。
substr($string,$start[,$length]);//从给定字符串中的给定位置截取给定长度或截取至末尾。

8. 为字符串中的每个字符设置随机颜色。

<?php

function rcolor() {
	srand((double)microtime() * 10000000);
	$rand = rand(30,170);
	return sprintf('%2X',$rand);//将$rand的值转换成2位大写的十六进制,输出至%位置,此处即转换后返回。
}
function rand_color($string) {
	$return='';
	$j = strlen($string);
	for ($i = 0; $i < $j; $i++) {
		$return .= '<font color="#'.rcolor().rcolor().rcolor(). '">'.$string[$i].'</font>';
	}
	return $return;
}
echo rand_color('alsdjflasdjfla');

//涉及函数:
microtime([ bool $get_as_float = FALSE ]);//返回当前 Unix 时间戳和微秒数,参数默认为false,返回string类型,为true时返回float类型。
sprintf(format,arg1[,arg2,...]);//按照format格式将后续参数依次替换format中%位置。

猜你喜欢

转载自blog.csdn.net/leavemetomorrow/article/details/83340984