PHP面试题 - PHP语言基础

1.  strlen()与mb_strlen()的作用分别是什么(新浪网技术部)

strlen和mb_strlen都是用于截取字符串的,其中strlen只针对单字节编码字符,也就是说它计算的是字符串的总字节数,如果是多字节编码,如gbk和utf8,使用strlen得到的不是字符的个数,而是该字符的总字节数,可以使用mb_strlen获取其字符个数,使用mb_strlen要注意两点,一是要开启mbstring扩展,二是要指定字符集。

示例:

$str1 = 'php';
echo strlen($str1); // 3

$str2 = '传智播客PHP学院';
echo strlen($str2); // 21 当前页面是utf8字符集,如果是gbk,则结果位15
echo mb_strlen($str2); // 21 注意,未指定字符集,使用内部字符编码(单字节)
echo mb_strlen($str2, 'utf8'); // 9

相关题目1:实现中文字串截取无乱码的方法。

方法一:使用php内置函数mb_substr()

方法二:自定义函数,以utf8为例,如下:

header('Content-Type:text/html;charset=utf8');
/**
 * utf8编码字符串截取无乱码
 * @param $str string 要处理的字符串
 * @param $start int 从哪个位置开启截取
 * @param $length int 要截取字符串的个数,默认从起始位置到末尾
 * @return string 截取后的字符串
 */
function substr_utf8($str, $start, $length = null) {
    return join("", array_slice(preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY), $start, $length));
}

// 实例
$str = '传智播客PHP学院';
echo substr_utf8($str,2,4); // 输出 播客PH

相关题目2:如何求解字符串“中国2北333京”的字符数(一个中文一个字符),并找到第四个字符“北”

方法一:使用php内置函数,确保在配置中已打开mbstring扩展

header('Content-Type:text/html;charset=utf8');
$a = '中国2北333京';
echo mb_strlen($a, 'utf8'); // 8
echo mb_substr($a, 3, 1, 'utf8'); //

方法二:自定义函数实现求其长度,截取使用上面定义的substr_utf8

header('Content-Type:text/html;charset=utf8');
/**
 * 计算utf编码字符串的长度
 * @param $str string 要计算的字符串
 * @return int 字符串的长度
 */
function strlen_utf8($str) {
    return count(preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY));
}
$a = '中国2北333京';
echo strlen_utf8($a); // 8

2. 下列哪个函数是用正则表达式将字符串分割到数组中()

A.Split
B.implode
C.explode
D.join

答案:A

3. 写出下列程序的输出结果(新浪网技术部)

$x = 87;
$y = ($x % 7) * 16;
$z = $x > $y ? 1 : 0;
echo $z;

答案:1

4. 写出下列几个预定义全局变量的作用(新浪网技术部)

$_SERVER['DOCUMENT_ROOT'] // 当前运行脚本所在的文档根目录
$_SERVER['HTTP_HOST'] // 当前请求的Host:头部的内容
$_SERVER['REMOTE_ADDR'] // 正在浏览当前页面用户的IP地址
$_SERVER['HTTP_REFERER'] // 链接到当前页面的前一页面的URL地址
$_SERVER['SERVER_NAME'] // 当前运行脚本所在服务器主机的名称
$_FILES // 包含有所有上传的文件信息
$_FILES['userfile']['name'] // 客户端机器文件的原名称
$_FILES['userfile']['type'] // 文件MIME类型,如果浏览器提供此信息的话,如“image/gif”。
$_FILES['userfile']['size'] // 已上传文件的大小,单位为字节
$_FILES['userfile']['tmp_name'] // 文件被上传后在服务端储存的临时文件名
$_FILES['userfile']['error'] // 和该文件上传相关的错误代码

5. include和require都能把另外一个文件包含到当前文件中,他们有什么区别?Include和include_once又有什么区别?(新浪网技术部)

二者区别只有一个,那就是对包含文件的需求程度,include就是包含,如果被包含的文件不存在的话,那么则会提示一个错误,但是程序会继续执行下去。
而require意思是需要,如果被包含文件不存在或者无法打开的时候,则会提示错误,并且会终止程序的执行。
这两种结构除了在如何处理失败之外完全一样。
once的意思是一次,那么include_once和require_once表示只包含一次,避免重复包含。

相关题目1:What is the difference between include & include_once? include & require?(Yahoo)

相关题目2:语句include和require都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们。

在如何处理失败时,include()产生一个警告而require()则导致一个致命错误;require_once()/include_once()

相关题目3:What functions can you use to add library code to the currently running script?(Yahoo)

include、require

6. 用最少的代码写一个求3值最大值的函数.(51.com笔试题)

// 定义hanshu
function maxinum($a, $b, $c) {
    return $a > $b ? ($a > $c ? $a : $c) : ($b > $c ? $b : $c);
}
// 调用实例
echo maxinum(24,15,8);

7. 简述POST和GET传输的最大容量分别是多少?(51.com笔试题)

POST根据你php.ini文件配置(默认是8M)
GET的话大小限制在2KB

相关题目:表单中get与post提交方法的区别?

get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息。

8. 有三个php文件位于同一目录下,内容如下所示,使用浏览器访问c.php,请问是否存在问题。如果存在问题,请指出修正方法并写出浏览器查看效果,如果不存在问题,请写出浏览器查看效果(酷讯PHP工程师笔试题)

A.php:-------
<?php function fa() {echo "inFunctionA\n";}?>
B.php:-------
<?php include 'a.php';?>
<?php function fb() {fa();echo"inFunctionB\n";}?>
C.php:-------
<?php include 'a.php';?>
<?php include 'b.php';?>
<?php fa();fb();?>

答案:存在问题,a.php 被包含了两次,导致fa()函数重复定义,使用include_once避免重复包含。

9. echo(),print(),print_r()的区别?(新浪)

echo是一个语言结构,输出一个或多个字符串;
print()实际上不是一个函数(它是一个语言结构),因此你可以不必使用圆括号来括起它的参数列表,输出一个字符串
print_r()打印变量的信息,基本类型,数组,对象。

echo $a,$b;
print('<br />');
echo $a.$b;

注意,是echo本身支持的一种语法,而.则是字符串链接操作符,使用,的效率要高一些。

相关题目:What is the difference between "print()" and "echo()"?(腾讯)

answer:print is afunction,echo is alanguage construct

10. 用PHP打印出前一天的时间格式是2006-5-1022:21:21。

echo date('Y-m-d H:i:s', time() - 3600*24);
// 使用strtotime,可以将任何字符串的事件表示转换成时间戳,仅针对英文
echo '<br />';
echo date('Y-m-d H:i:s', strtotime('-1 day'));
// 在实际开发的时候,strtotime非常有用,因为对于表单来说,提交的数据都是字符串
// 比如,2013-4-27,需要将其转成时间戳然后存到数据库

相关题目:求两个日期的差数,例如2009-3-1~2009-4-4的日期差数

(strtotime('2009-4-4')-strtotime('2009-3-1'))/3600*24

11.  不使用第三个变量交换两个变量的值

方案一:

$a = 'PHP';
$b = 'MySQL';
echo $a,$b;
list($a,$b) = array($b,$a);
echo '<br />';
echo $a,$b;

方案二:对字符进行编码,比如base64_encode,但要保证编码是可逆的

$a = 'PHP编程';
$b = 'MySQL数据库';
echo $a,$b;
// list($a,$b) = array($b,$a);
$a = base64_encode($a);
$b = base64_encode($b);
$a = $a . '&' . $b; // 得到一个有 & 符号连接的字符串
// 使用字符串分割函数得到数组
$b = explode('&', $a);
$a = base64_decode($b[1]); // 得到第一个字符串并解码
$b = base64_decode($b[0]); // 得到第二个字符串并解码

echo '<br />';
echo $a,$b;

12. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?

变量默认总是传值赋值。那也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,例如,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。
PHP也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用(换言之,“成为其别名”或者“指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。使用引用赋值,简单地将一个&符号加到将要赋值的变量前(源变量)。
对象默认是传引用。
对于较大的数据,传引用比较好。注意可以节省内存的开销。

相关题目1:What would the following code print to the browser? Why?

$num = 10;
function multiply($num) {
    $num = $num * 10;
}
multiply($num);
echo $num; // 10

相关题目2:What is the difference between a reference and a regular variable?How do you pass by reference & why would you want to?(Yahoo)

reference传送的是变量的地址而非它的值,所以在函数中改变一个变量的值时,整个应用都见到这个变量的新值。
一个regularvariable传送给函数的是它的值,当函数改变这个变量的值时,只有这个函数才见到新值,应用的其他部分仍然见到旧值。

13. 将1234567890转换成1,234,567,890每3位用逗号隔开的形式。(百度)

$str = '1234567890';
function str($str) {
    // 反转字符串得到0987654321
    $str = strrev($str);
    // 使用,分割字符串,得到098,765,432,1
    $str = chunk_split($str, 3, ',');
    // 再次反转字符串,得到,1,234,567,890
    $str = strrev($str);
    // 去掉左边的,得到1,234,567,890
    $str = ltrim($str, ',');
    return $str;
}

echo str($str); // 1,234,567,890

相关题目1:如何实现字符串翻转?

strrev(),不过这种方法都不能解决中文字符串翻转的问题,会出错的。

/**
 * 反转utf8的字符串,使用正则和数组实现
 * @param string $str
 * @return string
 */
function strrev_utf8($str) {
    return join('', array_reverse(preg_split('//u', $str)));
}

$str = '传智播客PHP学院';
echo strrev_utf8($str); // 院学PHP客播智传

相关题目2:假设现在有一个字符串www.baidu.com如何使用PHP对它进行操作使字符串以moc.udiab.输出?(亿邮)

$str = 'www.baidu.com';
echo strrev(str_replace('www', '', $str)); // moc.udiab.

14. 用PHP写出显示客户端IP与服务器IP的代码。

客户端IP:$_SERVER['REMOTE_ADDR']
服务器端IP:$_SERVER['SERVER_ADDR']

15. 简述如何得到当前执行脚本路径,包括所得到参数。

获取当前执行脚本路径使用$_SERVER['SCRIPT_FILENAME']或basename(__FILE__)获取参数,使用$_SERVER['QUERY_STRING']

16. What is the difference between foo() & @foo()?(Yahoo)

foo()会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。
@foo()在执行这个函式时,会隐藏所有上述的错误讯息。
很多应用程序都使用@mysql_connect()和@mysql_query来隐藏mysql的错误讯息,这是不对的,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。

17. 下面哪个选项没有将john添加到users数组中?(百度)

A.$users[]='john';
B.array_add($users,'john');
C.array_push($users,'john');
D.$users||='john';

答案:BD

18. 检测一个变量是否有设置的函数是否?是否为空的函数是?

isset检测一个变量是否设置
empty检测是否为空
注意二者的区别,如果变量是非空或非零的值,则empty()返回FALSE。换句话说,""、0、"0"、NULL、FALSE、array()以及没有任何属性的对象都将被认为是空的。

19. 在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量______中;而链接到当前页面的的前一页面URL记录在预定义变量______中。

当前脚本名称:$_SERVER['PHP_SELF']或者$_SERVER['SCRIPT_FILENAME'];
链接到当前页面的前一页面的URL地址:$_SERVER['HTTP_REFERER']

20. sort()、assort()、和ksort()有什么分别?它们分别在什么情况下使用?

sort(),根据数组中元素的值,以英文字母顺序排序,索引键会由0到n-1重新编号。主要是当数组索引键的值无关紧要时用来把数组排序。
assort(),PHP没有assort()函式,所以可能是asort()的笔误。
asort(),对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
ksort(),根据数组中索引键的值,以英文字母顺序排序,特别适合用于希望把索引键排序的关联数组。

21. 在PHP中error_reporting这个函数有什么作用?

打开或者关闭错误报告,如:
error_reporting(0);
error_reporting(E_ALL&~E_NOTICE);
error_reporting(E_ALL);

相关题目:error_reporting(2047)什么作用?(新浪)

2047 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024
其中,1对应E_ERROR,2对应E_WARAING,4对应E_PARSE,8对应E_NOTICE,16对应E_CORE_ERROR,32对应E_CORE_WARNING,64对应E_COMPILE_ERROR,128对应E_COMPILE_WARNING,256对应E_USER_ERROR,512对应E_USER_WARNING,1024对应E_USER_NOTICE。error_reporting(2047)意味着上述错误都会显示出来。

22. 写出以下程序的输出结果(CBSI)

$str = 'cd';
$$str = 'hotdog';
$$str .= 'ok';
echo $cd; // hotdogok

相关题目:什么是可变变量?

获取一个普通变量的值作为这个可变变量的变量名。

23. 常量如何定义?如何检测一个常量是否被定义?

定义常量:define(),
检测常量是否定义:defined(),如:

define('TEST','happynewyear!');
if(defined('TEST')) {
    echo TEST;
}

24. 执行程序段<php echo 8%(-2)>将输出

%为取模运算,输出0
$a%$b其结果的正负取决于$a的符号。

echo((-8)%3)."<br/>"; // 输出-2
echo(8%(-3))."<br/>"; // 输出2

25. 数组函数arsort的作用是____;语句error_reporting(2047)的作用是____。

arsort:对数组进行逆向排序并保持索引关系
error_reporting(2047)的作用report All errors and warnings。

26. 以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。

LoadModulephp5_module "c:/php/php5apache2.dll";
AddTypeapplication/x-httpd-php .php

27. 一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.

allow_call_time_pass_reference:是否启用在函数调用时强制参数被按照引用传递,默认关闭。

28. 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____

顶格写,并且不能包含任何其它字符除";",如:

$str=<<<SHOW
    my name is Jiang Qihui!
SHOW;

29. echo count("abc");输出什么?(新浪?)

输出1
count:计算数组中的单元数目或对象中的属性个数,通常是一个array,任何其它类型都只有一个单元。
对于对象,如果安装了SPL,可以通过实现Countable接口来调用count()。该接口只有一个方法count(),此方法返回count()函数的返回值。
如果var不是数组类型或者实现了Countable接口的对象,将返回1,有一个例外,如果var是NULL则结果是0。

相关题目:What will be the output of the following PHP code:(腾讯)

echo count(strlen("http://php.net"));

answer:1

30. 写个函数用来对二维数组排序(新浪)

/**
 * 根据某列对二维数组进行排序
 * @param $arr array 要排序的数组
 * @param $row string 排序依据列
 * @param $type string asc表示正序,默认值,desc表示逆序
 * @return array 返回排序好的数组
 */
function array_sort($arr, $row, $type = 'asc') {
    $arr_temp = array();
    // 将排序依据列作为数组的键名
    foreach ($arr as $v) {
        $arr_temp[$v[$row]] = $v;
    }
    // 然后按照键名对数组排序,并保持索引关系
    if ($type == 'asc') {
        ksort($arr_temp);
    } elseif ($type == 'desc') {
        krsort($arr_temp);
    } else {
        # code...
    }
    // 返回排序结果
    return $arr_temp;
}

$person = array(
    array('id' => 2, 'name' => 'zhangsan', 'age' => 23),
    array('id' => 5, 'name' => 'lisi', 'age' => 28),
    array('id' => 3, 'name' => 'apple', 'age' => 17),
);

// 调用实例
$person = array_sort($person, 'name');
print_r($person);

31. 写5个不同的自己的函数,来获取一个全路径的文件的扩展名,允许封装php库中已有的函数。(新浪)

$path = str_replace('\\', '/', __FILE__);

// 方法一
function ext_name1($path) {
    return strrchr($path, '.');
}

// 方法二
function ext_name2($path) {
    return substr($path, strrpos($path, '.'));
}

// 方法三
function ext_name3($path) {
    $path_parts = pathinfo($path);
    return $path_parts['extension'];
}

// 方法四
function ext_name4($path) {
    $arr = explode('.', $path);
    return $arr[count($arr) - 1];
}

// 方法五
function ext_name5($path) {
    $pattern = '/^[^\.]+\.([\w]+)$/';
    return preg_replace($pattern, '${1}', basename($path));
}

32. PHP的意思,它能干些什么?

PHP(HypertextPreprocessor,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到HTML中,尤其适合web开发。
PHP能做任何事。PHP主要是用于服务端的脚本程序,因此可以用PHP来完成任何其它的CGI程序能够完成的工作,例如收集表单数据,生成动态网页,或者发送/接收Cookies。但PHP的功能远不局限于此。
PHP脚本主要用于以下三个领域:
1)服务端脚本。这是PHP最传统,也是最主要的目标领域。
2)命令行脚本。可以编写一段PHP脚本,并且不需要任何服务器或者浏览器来运行它。通过这种方式,仅仅只需要PHP解析器来执行。
3)编写桌面应用程序。

33. Name a few ways to output(print) a block of HTML code in PHP?(Yahoo)

你可以使用PHP中任何一种输出语句,包括echo、print、printf,大部分人都使用如下例的echo:

echo "My string $variable";

你也可以使用这种方法:

echo<<<END
This text is written to the screen as output and this $variable is parsed too. If you wanted you can have <span> HTML tags in here as well.</span>The END;remarks must be on a line of itsown,and can't contain any extra white space.
END;

34. 写出以下程序的输出结果(CBSI)

$b = 201;
$c = 40;
$a = $b > $c ? 4 : 5;
echo $a;

输出结果为 4

35. $arr=array('james','tom','symfony');请打印出第一个元素的值,并请将数组的值用','号分隔并合并成字串输出。

打印第一个元素:echo$arr[0];
以','合并成字符串:echoimplode(',',$arr);

36. $a='abcdef';请取出$a的值并打印出第一个字母

echo $a{0} 或 echo $a[0]

相关题目:$string="abcdefg",那么$string{4}的值是?(卓望)

值是e

37. What does === do? What's an example of something that will give true for '==',but not '==='?(Yahoo)

===表示全等,是指的两个变量的值和类型都相等。
如 if(strpos('abc','a')==false) 和 if(strpos('abc','a')===false)

38. Which of the following snippets prints a representation of 42 with two decimal places?(腾讯)

A.printf("%.2d\n",42);
B.printf("%1.2f\n",42);
C.printf("%1.2u\n",42);

answer:B

39. Given $text='Content-Type:text/xml';Which of the following prints 'text/xml'?(腾讯)

A.printsubstr($text,strchr($text,':'));
B.printsubstr($text,strchr($text,':')+1);
C.printsubstr($text,strpos($text,':')+1);
D.printsubstr($text,strpos($text,':')+2);
E.printsubstr($text,0,strchr($text,':')

answer:C

40. What is the value of $a?(腾讯)

$a = in_array('01', array('1')) == var_dump('01' == 1);

A.True
B.False

answer:A

41. What is the value of $result in the following PHP code?(腾讯)

function timesTwo($int) {
    $int = $int * 2;
}

$int = 2;
$result = timesTwo($int);

answer:NULL

42. What is the best all-purpose way of comparing two strings?(腾讯)

A.Using the strpos function
B.Using the == operator
C.Using strcasecmp()
D.Using strcmp()

answer:C

43. 运行以下程序,$a的值是多少?

$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
$a = 'hello';
$b = &$a;
unset($b);
$b = 'world';
echo $a;

hello

44. 运行以下程序,$b的值是多少?

$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
$a = 1;
$x = &$a;
$b = $a++;
echo $b;

1

45. 运行以下程序,$x的值是多少?

$empty = '';
$null = NULL;
$bool = FALSE;
$notSet;
$array = array();
$x = empty($array);
echo $x ? 'true' : 'false';

true

46. 将字符09转换成十进制数字。(百度)

使用intval()函数,echo intval('09'),或者使用int强制类型转换。

47. 请写一个函数,实现以下功能:字符串"open_door"转换成"OpenDoor"、"make_by_id"转换成"MakeById"

/**
 * 字符串转换,如open_door->OpenDoor,make_by_id->MakeById
 * @param $str string 要转换的字符串
 * @return string 转换后的字符串
 */
function change_str($str) {
    $arr = explode('_', $str);
    $arr = array_map('ucfirst', $arr);
    return implode('', $arr);
}
// 测试
$str1 = 'open_door';
$str2 = 'make_by_id';
echo change_str($str1); // OpenDoor
echo change_str($str2); // MakeById

48. 要求写一段程序,实现以下数组$arr1转换成数组$arr2:

$arr1 = array(
    '0' => array('fid' => 1, 'tid' => 1, 'name' => 'Name1'),
    '1' => array('fid' => 1, 'tid' => 2, 'name' => 'Name2'),
    '2' => array('fid' => 1, 'tid' => 5, 'name' => 'Name3'),
    '3' => array('fid' => 1, 'tid' => 7, 'name' => 'Name4'),
    '4' => array('fid' => 3, 'tid' => 9, 'name' => 'Name5'),
);

$arr2 = array(
    '0' => array(
        '0' => array('tid' => 1, 'tid' => 1, 'name' => 'Name1'),
        '1' => array('tid' => 2, 'tid' => 2, 'name' => 'Name2'),
        '2' => array('tid' => 5, 'tid' => 5, 'name' => 'Name3'),
        '3' => array('tid' => 7, 'tid' => 7, 'name' => 'Name4'),
    ),
    '1' => array(
        '0' => array('tid' => 9, 'name' => 'Name5')
    )
);

参考代码:

$arr_temp = array();
$arr2 = array();

foreach ($arr1 as $v) {
    // 方法一
    $arr_temp[$v['fid']][] = array_slice($v, 1);
    // 方法二
    /*$arr_temp[$v['fid']][] = array(
        'tid' => $v['tid'],
        'name' => $v['name']
    );*/
}

foreach ($arr_temp as $v) {
    $arr2[] = $v;
}

49. 如何将一个数组元素的排列顺序反转过来(例如以下代码反转以后的顺序是:array('d','c','b','a'))?(选择2个答案)

<?php
  $array=array('a','b','c','d');
?>

A.array_flip()
B.array_reverse()
C.sort()
D.rsort()

答案:BD

50. $val=max('string',array(2,5,7),42);$val值为

$val值为array(2,5,7)

max用法实例如下:

echo max(1, 3, 5, 6, 7);  // 7
echo max(array(2, 4, 5)); // 5
echo max(0, 'hello');     // 0
echo max('hello', 0);     // hello
echo max(-1, 'hello');    // hello

// 对多个数组,max 从左向右比较。
// 因此在本例中:2 == 2,但 4 < 5
$val = max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7)

// 如果同时给出数组和非数组作为参数,则总是将数组视为
// 最大值返回
$val = max('string', array(2, 5, 7), 42);   // array(2, 5, 7)

51. 定义常量MYPI=3.14_________________________;

define("MYPI","3.14");

52. 简述单引号和双引号的用法

双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。

53. Switch完整语法和注意事项

使用Switch语句可以避免冗长的if..elseif..else代码块,case只能处理整数,或者能像整数一样运算的类型,比如char,使用时case后用'',注意break不能少,default是为了处理一些之前没有包含到的情况,这样更为安全。

54. 用PHP编写代码在页面输出当前的北京时间,格式为“2007-01-1809:22:0309:22:03”

date_default_timezone_set('PRC');
echo date("Y-m-dH:i:s",time());

55. 简述GBK、GB2312、BIG5、GB18030

GB2312支持的汉字较少,GBK是相比GB2312汉字更为丰富,GB18030相比GBK增加了一些少数名族汉字汉字库更为多样,但是常人很难用到,一般简体中文使用GBK而繁体中文使用BIG5。

56. 计算某段字符串中某个字符出现的次数(例如:gdfgfdgd59gmkblg中g的次数)

$text = 'gdfgfdgd59gmkblg';
echo substr_count($text,'g');

57. 以下语句可能存在错误,如果存在错误请指出什么错误(每个语句单独考虑)

print_r$val=333; // 有误,print_r是一个函数,需加上括号,如果是print则可以
print_r($val=333); //
$a+=($b=4)+5; //
$foo[bar]='enemy'; // 无,最好bar加上引号functionx($a="1",$b){}
function x($a = '1', $b){} // 无,但给参数默认值应尽量从右向左

58. 写出如下程序的输出结果(小米)

$str1 = null;
$str2 = false;
echo $str1 == $str2 ? '相等' : '不相等';

相等

$str3 = '';
$str4 = 0;
echo $str3 == $str4 ? '相等' : '不相等';

相等

$str5 = 0;
$str6 = '0';
echo $str5 == $str6 ? '相等' : '不相等';

不相等

59. 写出如下程序的输出结果

$a1 = null;
$a2 = false;
$a3 = 0;
$a4 = '';
$a5 = '0';
$a6 = 'null';
$a7 = array();
$a8 = array(array());

echo empty($a1) ? 'true' : 'false';
echo empty($a2) ? 'true' : 'false';
echo empty($a3) ? 'true' : 'false';
echo empty($a4) ? 'true' : 'false';
echo empty($a5) ? 'true' : 'false';
echo empty($a6) ? 'true' : 'false';
echo empty($a7) ? 'true' : 'false';
echo empty($a8) ? 'true' : 'false';

true true true true true false true false

60. 写出如下程序的输出结果

$test = 'aaaaaa';
$abc = &$test;
unset($test);
echo $abc;

aaaaaa

61. 写出如下程序的输出结果

$count = 5;
function get_count() {
    static $count = 0;
    return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();

5 0 1

在PHP中,作用域是不重叠的,函数之外的是全局变量,函数内部定义的则是局部变量,二者是两个不同的变量,除非在函数内使用global显式声明使用全局变量或直接用$_GLOBALS来引用。

62. 写出如下程序的输出结果

$GLOBALS['var1'] = 5;
$var2 = 1;
function get_value() {
    global $var2;
    $var1 = 0;
    return $var2++;
}

get_value();

echo $var1;
echo $var2;

5 2

63. 写出如下程序的输出结果

function get_arr($arr) {
    unset($arr[0]);
}

$arr1 = array(1, 2);
$arr2 = array(1, 2);

get_arr(&$arr1);
get_arr($arr2);

echo count($arr1);
echo count($arr2);

1 2

64. $arr=array('james','tom','symfony');请将’jackjack’’添加到$arr数组的开头,并把jack打
印出来。

array_unshift($arr,'jack');
echo$arr[0];

65. $arr=array('james','tom','symfony');请将$arr数组的值用’,’分割并合并成字符串输出?

echo implode(',',$arr);

66. $str='jack,james,tom,symfonyjack,james,tom,symfony';请将$st$strr用’,’分割,并把分割后的值放到$ar$arr
r数组中?

$arr=explode(',',$str);

67. $arr=array(3,7,2,1,array(3,7,2,1,'d','abc');请将$arr按照从大到小的顺序排序,并保持其键值不变?

arsort($arr);
print_r($arr);

68. $mail=“gaofei@163.comgaofei@163.com”;请将此邮箱的域(163.com)取出来并打印,看最多能写出几种方法?

echo strstr($mail,'163');
echo substr($mail,7);
echo substr($mail,strpos($mail,'@')+1);
$arr=explode("@",$mail);echo $arr[1];

69. PHP中的注释的写法,要列出三种?

// 注释内容 C风格的单行注释
# 注释内容 unix风格的单行注释
/*注释内容*/ C风格的多行注释

70. 如何在一个php函数中使用具有全局属性的变量,说出两种方式?

global $a 或者 $GLOBALS['a']

71. 若$aa='aa';则print('aais\'aa\''."<br/>")会输出什么?

aa is 'aa'

72. 如何把$a=‘123’转化成123,列出两种方式?

$a = '123';
$a = (int)$a; // 第一种方式
$a = intval($a); // 第二种方式
settype($a, 'int'); // 第三种方式

相关题目:字符串怎么转成整数,有几种方法?怎么实现?

1) 强制类型转换:(整型)字符串变量名;
2) 直接转换:settype(字符串变量,整型);
3) intval(字符串变量);

73. 说说break和continue可以用在哪些语句里,并且列出二者的区别?

break和continue可以用在switch语句中,或是循环结构中
它们的区别主要是体现在循环语句中,break表示跳出整个循环,不再执行,循环将终止,而continue则表示跳出本次循环,继续下一次的循环,不会终止循环。

74. 函数中的默认参数位置如何放置?

当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则,函数将不会按照预期的情况工作。

75. 如何往一个数组后面添加一个值?列出两种方式?

$arr[]=$value;
array_push($arr,$value);

76. 说出数组涉及到的常用函数。

array -- 声明一个数组
count -- 计算数组中的单元数目或对象中的属性个数
foreach -- 遍历数组
list -- 遍历数组
explode -- 将字符串转成数组
implode -- 将数组转成一个新字符串
array_merge -- 合并一个或多个数组
is_array -- 检查是否是数组
print_r -- 输出数组
sort -- 数组排序
array_keys -- 返回数组中所有的键名
array_values -- 返回数组中所有的值
key -- 从关联数组中取得键名

77. 字符串的常用函数?

trim() -- 去除字符串首尾处的空白字符(或者其他字符)
strlen() -- 字符串长度
substr() -- 截取字符串
str_replace() -- 替换字符串函数
substr_replace() -- 对指定字符串中的部分字符串进行替换
strstr() -- 检索字符串函数
explode() -- 分割字符串函数
implode() -- 将数组合并成字符串
str_repeat() -- 重复一个字符串
addslashes(); -- 转义字符串
htmlspecialchars() -- THML实体转义

78. 以下代码的执行后是,$result值为:(奇矩互动)

$srcArray = array('a','b','c','d');
$randValue = array_rand($srcArray);
$result = is_string($randValue);

A.a
B.false
C.true
D.b
E.c

答案:B

mixedarray_rand(array$input[,int$num_req])
从数组中随机取出一个或多个单元,它接受input作为输入数组和一个可选的参数num_req,指明了你想取出多少个单元-如果没有指定,默认为1。
如果你只取出一个,array_rand()返回一个随机单元的键名,否则就返回一个包含随机键名的数组。
所以使用array_rand函数,返回结果要么是键名,有么是数组,在这个例子中,数组是索引数组,所以返回的是整型。

79. 以下代码的执行后是,$result值为:(奇矩互动)

$a = '01';
$result = 1;
if (in_array($a, array('1'))) {
    $result = 2;
} elseif ($a == '1') {
    $result = 3;
} elseif ($a == '01') {
    $result = 4;
} else {
    $result = 5;
}

A.1
B.2
C.3
D.4
E.5

答案:B

80. php函数名是否区分大小写?(奇矩互动)

A.不区分
B.区分

答案:A

函数名是大小写无关的,不过在调用函数的时候,通常使用其在定义时相同的形式。

81. 以下代码的执行后是,$result值为:(奇矩互动)

$x = '';
$result = is_null($x);

答案:C

is_null--检测变量是否为NULL,如果变量是null则返回TRUE,否则返回FALSE。在下列情况下一个变量被认为是NULL:
1)被赋值为NULL
2)尚未被赋值
3)被unset()

82. 翻转字符串中的单词,字符串仅包含大小写字母和空格,单词间使用空格分隔。如:输入“ThisisPHP”,输出“PHPisThis”(非必要请不要使用PHP自带函数)(小米)

function reverse($str) {
    $arr = explode(' ', $str);
    $arr = array_reverse($arr);
    return implode(' ', $arr);
}


$str = 'This is PHP';
echo reverse($str);

83. 请列举出你所知道的全局环境变量(亿邮)

$_ENV;
$_SERVER;
$_REQUEST;
$_FILES;
$_SESSION;
$_COOKIE;
$_GET;
$_POST;
$GLOBALS;

84. 设有这样一个数组$a=array(array(id=>0),array(id=>1),array(id=>2)......)id=>0-10000,请问你如何使用PHP判断id=>500是否在这个数组内?(亿邮)

使用in_array函数,代码如下:

$a = array(
    array('id' => 0),
    array('id' => 1),
    array('id' => 2),
    array('id' => 500)
);

$b = array('id' => 500);

if (in_array($b, $a)) {
    echo 'Yes';
} else {
    echo 'No';
}

85. 在PHP中两个数组怎么连接合并在一起(亿邮)

使用array_merge()函数

86. 运行以上代码后$a$b$c分别是?(卓望)

$a = $b = $c = 0;
$a = $b && $c;

$a 为 false,$b = $c = 0;

posted @ 2016-04-14 15:33  chenjiacheng  阅读(425)  评论(0编辑  收藏  举报