一段简单的PHP代码,为什么输出了两幅相同的图?(腾讯php面试题题)

你的位置: >
> PHP面试题及答案解析(1)—PHP语法基础
1. strlen( )与 mb_strlen( )的作用分别是什么?
strlen和mb_strlen都是用于获取字符串长度。
strlen只针对单字节编码字符,也就是说它计算的是字符串的总字节数。如果是多字节编码,如 gbk 和 utf-8,使用 strlen 得到是该字符的总字节数;
可以使用mb_strlen获取其字符个数,使用mb_strlen 要注意两点,一是要开启 mbstring 扩展,二是要指定字符集。
strlen函数不管是字符串是单字节编码还是多字节编码,函数返回的结果都是字符串的总字节数。
mb_strlen函数当字符串是单字节编码时,函数返回的结果是字符串的总字节数。当字符串是多字节编码时,函数返回的结果是字符串的个数。
mb_strlen函数在没有指定字符编码时,表示使用默认字符编码,即单字节编码,函数返回的是字符串的总字节数。
PHP默认是单字节编码(内部字符编码),多字节编码方式有gbk、utf-8等。
header('Content-Type:text/charset=utf-8');
$str1 ="duang~";
echo strlen($str1);
echo "&br /&";
echo mb_strlen($str1);
echo "&br /&";
echo mb_strlen($str1,'utf-8');
echo "&hr /&";
$str2 = "你是我的小苹果";
echo strlen($str2);
echo "&br /&";
echo mb_strlen($str2);
echo "&br /&";
echo mb_strlen($str2,'utf-8');
相关题目 1:实现中文字串截取无乱码的方法。
方法一,使用 php 内置函数 mb_substr()
方法二,自定义函数,以 utf-8 为例,如下:
header('Content-Type:text/charset=utf-8');
$str = "你是我的温暖阳光";
echo mb_substr($str, 2,4,'utf-8');
$str string 要处理的字符串
$start int 从哪个位置开始截取
$length int 要截取字符的个数
string 截取后得到的字符串
function substr_utf8($str,$start,$length = null)
$sep = "";
$arr = array_slice(preg_split("//u", $str,-1,PREG_SPLIT_NO_EMPTY), $start,$length);
return join($sep,$arr);
$str = "你是我的温暖阳光";
echo substr_utf8($str,2,4);
相关题目2:如何求解字符串“中国2北333京”的字符数(一个中文一个字符),并找到第四个字符“北”。
方法一,使用php内置函数,确保配置中已打开mbstring扩展
方法二,自定义函数实现求其长度,截取使用上面定义的substr_utf8
header('Content-Type:text/charset=utf-8');
$str = "中国2北333京";
echo mb_strlen($str,'utf-8');
echo mb_substr($str, 3,1,'utf-8');
$str string 要处理的字符串
$start int 从哪个位置开始截取
$length int 要截取字符的个数
string 截取后得到的字符串
function substr_utf8($str,$start,$length = null)
$sep = "";
$arr = array_slice(preg_split("//u", $str,-1,PREG_SPLIT_NO_EMPTY), $start,$length);
return join($sep,$arr);
$str string 要处理的字符串
int 字符串的长度或字符个数
function strlen_utf8($str)
return count(preg_split("//u", $str,-1,PREG_SPLIT_NO_EMPTY));
$str = "中国2北333京";
echo strlen_utf8($str);
echo substr_utf8($str,3,1);
2. 下列哪个函数是用正则表达式将字符串分割到数组中 ( )。
B. implode
C. explode
3. 写出下列程序的输出结果。
$y = ($x % 7) * 16;
$z = $x & $y ? 1 : 0;
4. 写出下列几个预定义全局变量的作用 。
$_SERVER['DOCUMENT_ROOT']//当前运行脚本所在的文档根目录
$_SERVER['HTTP_HOST ']//当前请求的 Host: 头部的内容
$_SERVER['REMOTE_ADDR']//正在浏览当前页面用户的 IP 地址
$_SERVER['HTTP_REFERER']//链接到当前页面的前一页面的 URL 地址
$_SERVER['SERVER_NAME']//当前运行脚本所在服务器主机的名称
$_FILES //包含有所有上传的文件信息
S_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 值最大值的函数。
function maxnum($a,$b,$c)
return $a & $b ? ($a & $c ? $a : $c) : ($b & $c ? $b : $c);
echo maxnum(24,15,8);
7. 简述 POST 和 GET 传输的最大容量分别是多少?
POST 根据你 php.ini 文件配置(默认是 8M)
GET 的话大小限制在 2KB
相关题目:表单中 get 与 post 提交方法的区别?
get 是发送请求 HTTP 协议通过 url 参数传递进行接收,而 post 是实体数据,可以通过表单提交大量信息。
8. 有三个 php 文件位于同一目录下,内容如下所示。使用浏览器访问 c.php,请问是否存在问题。如果存在问题,请指出修正方法并写出浏览器查看效果 ,如果不存在问题,请写出浏览器查看效果。
function fa(){
echo "in Function A\n";
include 'a.php';
function fb() {
echo "in Function B\n";
include 'a.php';
include 'b.php';
答案:存在问题,a.php 被包含了两次,导致 fa()函数重复定义,使用 include_once 避免重复包含。
9. echo(),print(),print_r()的区别?
echo, print是PHP语句print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print只能打印出简单类型变量的值(如int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)
echo — 输出一个或者多个字符串
print –输出一个字符串
print_r — 打印关于变量的易于理解的信息。
在实际使用中, print 和 echo 两者的功能几乎是完全一样。
可以这么说,凡是有一个可以使用的地方,另一个也可以使用。但是,两者之间也还是一个非常重要的区别:
在 echo 函数中,可以同时输出多个字符串,而在 print 函数中则只可以同时输出一个字符串。同时,echo函数并不需要圆括号,所以echo函数更像是语句而不像是函数。
echo 和 print 都不是函数,而是语言结构,所以圆括号都不是必需的。他们的区别在于:
(1) echo可以输出多个字符串,像下面这样:
echo 'a','b','c';
如果你非要加上圆括号,注意写成echo (‘a’,’b’,’c’);是错误的,应该写成:
echo ('a'),('b'),('c');
它没有像函数的行为,所以不能用于函数的上下文
(2) print只能输出一个字符串,它可以表现得像一个函数,比如你可以如下使用:
$ret = print 'Hello World';
(有返回值所以能够用在更复杂的表达式中,可以判断是否输出成功等表达式)所以它能用在更复杂的表达式中。
另外,echo的效率相对比较快~
如下代码:
$a='hello ';
$b='php world!';
echo $a,$b.'&br /&';
print $a.$b.'&br /&';
print $a,$b.'&br /&';
,是 echo 本身支持的一种语法,而.则是字符串连接操作符,使用,的效率要高一些。(少了连接运算)
echo可以使用,来分隔字符串变量,也可以使用,来分隔字符串变量;print只能使用.来分隔字符串变量。
echo效率比print高
echo命令和print命令相同,没有区别
echo()和print()有区别:
echo()没有返回值,与echo命令相同
print()有返回值,总是返回1
printf()和sprintf()类似,均为格式化输出,不同的是前者输出到标准输出,后者输出到变量
相关题目:What is the difference between “print()” and “echo( )”?
answer: print is a function,echo is a language construct
<h6 id="用-php-打印出前一天的时间格式是--. 用 PHP 打印出前一天的时间格式是
22:21:21。
echo date("Y-m-d H:i:s",time() - 3600*24);
echo "&br /&";
echo date("Y-m-d H:i:s",strtotime("-1 day"));
echo "&br /&";
$date = strtotime("");
使用strtotime可以将任何字符串的时间表示(now,seconds,day,week等)转换成时间戳,仅针对英文。
在实际开发的时候,strtotime非常有用,因为对于表单来说,提交的数据都是字符串。比如,“”需要将其转换成时间戳然后存到数据库中。
相关题目:求两个日期的差数,例如
的日期差数
(strtotime(&#-4&#8221;)-strtotime(&#-1&#8221;))/3600*24
11. 不使用第三个变量交换两个变量的值
$a = "PHP";
$b = "MySQL";
echo '$a='.$a.'&br /&';
echo '$b='.$b.'&br /&';
list($a,$b) = array($b,$a);
echo '$a='.$a.'&br /&';
echo '$b='.$b.'&br /&';
echo "&hr /&";
$a = "PHP";
$b = "MySQL";
echo '$a='.$a.'&br /&';
echo '$b='.$b.'&br /&';
$a = $a.'&'.$b;
$b = explode('&', $a);
$a = $b[1];
$b = $b[0];
echo '$a='.$a.'&br /&';
echo '$b='.$b.'&br /&';
请说明 php 中传值与传引用的区别。什么时候传值什么时候传引用?
变量默认总是传值赋值。
那也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,例如,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。
PHP 也提供了另外一种方式给变量赋值:引用赋值。
这意味着新的变量简单的引用(换言之,“成为其别名” 或者 “指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。使用引用赋值,简单地将一个&符号加到将要赋值的变量前(源变量)。
对象默认是传引用。
对于较大的数据,传引用比较好,这样可以节省内存的开销。
相关题目 1:What would the following code print to the browser? Why?
$num = 10;
function multipy($num){
$num = $num +10;
multipy($num);
相关题目 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 传送的是变量的地址而非它的值,所以在函数中改变一个变量的值时,整个应用都见到这个变量的新值。
一个 regular variable 传送给函数的是它的值,当函数改变这个变量的值时,只有这个函数才见到新值,应用的其他部分仍然见到旧值。
转换成 1,234,567,890 每 3 位用逗号隔开的形式。
function str($str)
$str = strrev($str);
$str = chunk_split($str,3,',');
$str = strrev($str);
$str = ltrim($str,',');
echo str($str);
相关题目 1:如何实现字符串翻转?
strrev(),不过这种方法都不能解决中文字符串翻转的问题,会出错的。
header("Content-Type:text/charset=utf-8");
string $str
function strrev_utf8($str)
return join("",array_reverse(preg_split("//u", $str)));
$str = "悄悄是别离的笙箫";
echo strrev_utf8($str);
相关题目 2:假设现在有一个字符串
如何使用 PHP 对它进行操作使字符串以 moc.udiab.输出?
$str = "";
echo strrev(str_replace('www','',$str));
14. 用 PHP 写出显示客户端 IP 与服务器 IP 的代码。
客户端 IP:$_SERVER["REMOTE_ADDR"]
服务器端 IP:$_SERVER["SERVER_ADDR"]
15. 简述如何得到当前执行脚本路径,包括所得到参数。
获取当前执行脚本路径使用$_SERVER["SCRIPT_FILENAME"]或__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[ ] = &#8220;john&#8221;;
B. array_add($users, &#8220;john&#8221;);
C. array_push($users, &#8220;john&#8221;);
D. $users ||= &#8220;john&#8221; ;
18. 检测一个变量是否有设置的函数?是否为空的函数是?
isset 检测一个变量是否设置
empty 检测是否为空
注意二者的区别,如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,&#8221;&#8221;、0、&#43;、NULL、FALSE、array() 以及没有任何属性的对象都将被认为是空的。
isset是检测变量是否设置/定义,empty是检测已定义的变量的值是否为空。
19. 在 PHP 中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量______中;而链接到当前页面的的前一页面 URL 记录在预定义变量______中。
当前脚本名称:$_SERVER[&#8220;PHP_SELF&#8221;]或者 $_SERVER[&#8220;SCRIPT_NAME&#8221;];
链接到当前页面的前一页面的 URL 地址:$_SERVER[&#8220;HTTP_REFERER&#8221;]。
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_WARNING,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)意味着上述错误都会显示出来。
写出以下程序的输出结果 (CBSI)
$str = 'cd';
$$str = 'hotdog';//$cd = 'hotdog';
$$str .= 'ok';//$cd .= 'ok';
相关题目:什么是可变变量?
获取一个普通变量的值作为这个可变变量的变量名。
23. 常量如何定义? 如何检测一个常量是否被定义?
定义常量:define()
检测常量是否定义:defined()
define("TEST","happy new year!");
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,见 21 题中相关题目。
26. 以 Apache 模块的方式安装 PHP,在文件 http.conf 中首先要用语句_动态装载 PHP模块,然后再用语句_使得 Apache 把所有扩展名为 php 的文件都作为 PHP 脚本处理。
LoadModule php5_module &#8220;c:/php/php5apache2.dll&#8221;;
AddType application/x-httpd-php .php
27. 一个函数的参数不能是对变量的引用,除非在 php.ini 中把____设为 on.
allow_call_time_pass_reference :是否启用在函数调用时强制参数被按照引用传递,默认关闭。
28. 在 PHP 中,heredoc 是一种特殊的字符串,它的结束标志必须____顶格写,并且不能包含任何其它字符除&#8221;;&#8221;
29.echo count("abc"); 输出什么?
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"));
30. 写个函数用来对二维数组排序。
$arr array 要排序的二维数组
$row string 排序依据的某列
$type string asc表示正序,为默认值;desc表示逆序
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);
return $arr_
$person = array(
array('id'=&2,'name'=&'zhangsan','age'=&23),
array('id'=&5,'name'=&'lisi','age'=&28),
array('id'=&3,'name'=&'apple','age'=&17)
echo "&pre&before:&br /&";
print_r($person);
echo "&/pre&";
echo "&hr /&";
$person2 = array_sort($person,'name');
echo "&pre&after:&br /&";
print_r($person2);
echo "&/pre&";
31. 写 5 个不同的自己的函数,来获取一个全路径的文件的扩展名,允许封装 php 库中已有的函数。
function ext_name1($path){
$path_info = strrchr($path, '.');
return ltrim($path_info,'.');
function ext_name2($path){
$path_info = substr($path,strrpos($path, '.'));
return ltrim($path_info,'.');
function ext_name3($path){
$path_info = pathinfo($path);
return $path_info['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));
$path = str_replace('\\', '/', __FILE__);
echo "$path&br /&";
echo ext_name1($path);echo "&br /&";
echo ext_name2($path);echo "&br /&";
echo ext_name3($path);echo "&br /&";
echo ext_name4($path);echo "&br /&";
echo ext_name5($path);echo "&br /&";
32. PHP 的意思,它能干些什么?
PHP( Hypertext Preprocessor,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML 中,尤其适合 web 开发。
PHP 主要是用于服务端的脚本程序,因此可以用 PHP 来完成任何其它的 CGI 程序能够完成的工作,例如收集表单数据,生成动态网页,或者发送/接收Cookies。但 PHP 的功能远不局限于此。
PHP 脚本主要用于以下三个领域:
服务端脚本。这是 PHP 最传统,也是最主要的目标领域。
命令行脚本。可以编写一段 PHP 脚本,并且不需要任何服务器或者浏览器来运行它。通过这种方式,仅仅只需要 PHP 解析器来执行。
编写桌面应用程序。
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
34. 写出以下程序的输出结果 (CBSI)
$a = $b & $c ? 4 : 5;
输出结果为 4
$arr = array('james', 'tom', 'symfony');请打印出第一个元素的值,并请将数组的值用&#8217;,&#8217;号分隔并合并成字串输出。
打印第一个元素:echo $arr[0];
以’,’合并成字符串:echo implode(',',$arr);
36. $a = &#8216;abcdef&#8217;; 请取出$a 的值并打印出第一个字母。
echo $a{0} 或 echo $a[0]
相关题目:$string=&#8221;abcdefg&#8221;,那么$string{4}的值是?
37. What does === do? What&#8217;s an example of something that will give true for &#8216;==&#8217;, but not&#8217;===&#8217;? (Yahoo)
=== 表示全等,是指的两个变量的值和类型都相等。
如 if (strpos(&#8216;abc&#8217;,&#8217;a&#8217;) == false) 和 if (strpos(&#8216;abc&#8217;,&#8217;a&#8217;) === false)
38. Which of the following snippets prints a representation of 42 with two decimal places?
A. printf(&#8220;%.2d\n&#8221;, 42);
B. printf(&#f\n&#8221;, 42);
C. printf(&#u\n&#8221;, 42);
39. Given $text = &#8216;Content-TypeType:text/xml&#8217;; Which of the following prints &#8216;text/xml&#8217;?
A. print substr($text, strchr($text, &#8216;:&#8217;));
B. print substr($text, strchr($text, &#8216;:&#8217;) + 1);
C. print substr($text, strpos($text, &#8216;:&#8217;) + 1);
D. print substr($text, strpos($text, &#8216;:&#8217;) + 2);
E. print substr($text, 0, strchr($text, &#8216;:&#8217;));
$text = 'Content-Type:text/xml';
print substr($text, strchr($text,':'));
echo "&br /&";
print substr($text, strchr($text,':')+1);
echo "&br /&";
print substr($text, strpos($text,':')+1);
echo "&br /&";
print substr($text, strpos($text,':')+2);
echo "&br /&";
print substr($text, 0,strchr($text,':'));
echo "&br /&";
40. What is the value of $a?
$a = in_array('01',array('1')) == var_dump('01' == 1);
41. What is the value of $result in the following PHP code?
function timesTwo($int)
$int = $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()
43. 运行以下程序,$a 的值是多少?
$a = "hello";
unset($b);
$b = "world";
echo $a,$b;
answer:hello
44. 运行以下程序,$b 的值是多少?
$b = $a++;
echo $a,$b;
45. 运行以下程序,$x 的值是多少?
$array = array();
$x = empty($array);
echo $x ? "true":"false";
answer:ture
46. 将字符 09 转换成十进制数字。
使用 intval 函数,echo intval(&#21;),或者使用 int 强制类型转换。
47. 请 写 一 个 函 数 , 实 现 以 下 功 能 : 字 符 串 &#8220;open_door&#8221; 转 换 成 &#8220;OpenDoor&#8221; 、&#8221;make_by_id&#8221; 转换成 &#8220;MakeById&#8221;。
$str string 要转换的字符串
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);
echo change_str($str2);
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')
$arr_tmp = array();
$arr2 = array();
foreach ($arr1 as $v) {
$arr_tmp[$v['fid']][] = array_slice($v, 1);
foreach ($arr_tmp as $v) {
$arr2[] = $v;
print_r($arr1);
print_r($arr2);
49. 如何将一个数组元素的排列顺序反转过来(例如以下代码反转以后的顺序是: array (&#8216;d&#8217;,&#8217;c&#8217;, &#8216;b&#8217;, &#8216;a&#8217;))? (选择 2 个答案)
$array = array ('a', 'b', 'c', 'd');
A. array_flip()
B. array_reverse()
D. rsort()
50. $val = max(&#8216;string&#8217;, array(2, 5, 7), 42);$val 值为
array(2,5,7)
max 用法示例如下:
echo max(1,3,5,6,7);
echo "&br /&";
echo max(array(2,4,5));
echo "&br /&";
echo max(0,'hello');
echo "&br /&";
echo max('hello','0');
echo "&br /&";
echo max(-1,'hello');
echo "&br /&";
$val = max(array(2,4,8),array(2,5,7));
var_dump($val);
echo "&br /&";
$val = max('string', array(2, 5, 7), 42);
var_dump($val);
51. 定义常量 MYPI=3.14_________________________;
define(&#8220;MYPI&#);
52. 简述单引号和双引号的用法
双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。
53. Switch 完整语法和注意事项
使用 Switch 语句可以避免冗长的 if..elseif..else 代码块,case只能处理整数,或者能像整数一样运算的类型,比如char,使用时case 后用&#8221;,注意 break不能少,default是为了处理一些之前没有包含到的情况,这样更为安全。
<h6 id="用-php-编写代码在页面输出当前的北京时间格式为--. 用 PHP 编写代码在页面输出当前的北京时间,格式为 “ 09:22:03”
date_default_timezone_set(&#8216;PRC&#8217;);
echo date(&#8220;Y-m-d H:i:s&#8221;,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;// error,print_r 是一个函数,需加上括号,如果是 print 则可以
print_r($val = 333); // 正确
$a += ($b = 4) + 5;// notice,$a 未定义,但可以正确运行
$foo[bar] = 'enemy';// notice,最好 bar 加上引号
function x($a = "1", $b){}// 无,但给参数默认值应尽量从右向左
58. 写出如下程序的输出结果。
header("Content-type:text/charset=utf-8");
$str1 = null;
$str2 = false;
echo $str1 == $str2 ? '相等' : '不相等';
$str3 = '';
$str4 = 0;
echo $str3 == $str4 ? '相等' : '不相等';
$str5 = 0;
$str6 = '0';
echo $str1 === $str2 ? '相等' : '不相等';
59. 写出如下程序的输出结果。
$a1 = null;
$a2 = false;
$a5 = '0';
$a6 = 'null';
$a7 = array();
$a8 = array(array());
echo empty($a1) ? 'true' : 'false';
echo '&br /&';
echo empty($a2) ? 'true' : 'false';
echo '&br /&';
echo empty($a3) ? 'true' : 'false';
echo '&br /&';
echo empty($a4) ? 'true' : 'false';
echo '&br /&';
echo empty($a5) ? 'true' : 'false';
echo '&br /&';
echo empty($a6) ? 'true' : 'false';
echo '&br /&';
echo empty($a7) ? 'true' : 'false';
echo '&br /&';
echo empty($a8) ? 'true' : 'false';
60. 写出如下程序的输出结果。
$test = 'aaaa';
unset($test);
61. 写出如下程序的输出结果。
$count = 5;
function get_count()
static $count = 0;
return $count++;
echo get_count();
echo get_count();
在 PHP 中,作用域是不重叠的,函数之外的是全局变量,函数内部定义的则是局部变量,二者是两个不同的变量,除非在函数内使用 global 显式声明使用全局变量或直接用$_GLOBALS 来引用。
62. 写出如下程序的输出结果。
$GLOBALS['var1'] = 5;
$var2 = 1;
function get_value()
global $var2;
$var1 = 0;
return $var2++;
get_value();
echo $var1;
echo $var2;
63. 写出如下程序的输出结果。
function get_arr()
unset($arr[0]);
$arr1 = array(1,2);
$arr2 = array(1,2);
get_arr(&$arr1);
get_arr($arr2);
echo count($arr1);
echo count($arr2);
64. $arr = array(&#8216;james&#8217;, &#8216;tom&#8217;, &#8216;symfony&#8217;); 请将’jack’添加到$arr 数组的开头,并把 jack 打印出来。
array_unshift($arr,’jack’);
echo $arr[0];
65. $arr = array(&#8216;james&#8217;, &#8216;tom&#8217;, &#8216;symfony&#8217;);请将$arr 数组的值用 ’,’分割并合并成字符串输出?
echo implode(‘,’,$arr);
66. $str = ‘jack,james,tom,symfony’; 请将$str 用’,’分割,并把分割后的值放到$arr 数组中?
$arr = explode(‘,’,$str);
67. $arr = array(3,7,2,1,’d’,’abc’);请将$arr 按照从大到小的顺序排序,并保持其键值不变?
arsort($arr);
print_r($arr);
68. $mail = “”; 请将此邮箱的域()取出来并打印,看最多能写出几种方法?
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[&#8216;a&#8217;]
71. 若$aa=&#8217;aa&#8217;;则 print(&#8216;aa is \&#8217;aa\&#8221;.&#8221;
&#8220;)会输出什么?
aa is &#8216;aa&#8217;
72. 如何把$a = ‘123’转化成 123,列出两种方式?
$a = '123';
$a = (int)$a;
$a = intval($a);
settype($a,'int');
相关题目:字符串怎么转成整数,有几种方法?怎么实现?
强制类型转换: (整型)字符串变量名;
直接转换:settype(字符串变量,整型);
intval(字符串变量);
73. 说说 break 和 continue 可以用在哪些语句里,并且列出二者的区别?
break 和 continue 可以用在 switch 语句中,或是循环结构中
它们的区别主要是体现在循环语句中,break 表示 跳出整个循环,不再执行,循环将终止,而 continue 则表示跳出本次循环,继续下一次的循环,不会终止循环。
74. 函数中的默认参数位置如何放置?
当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则,函数将不会按照预期的情况工作。
75. 如何往一个数组后面添加一个值?列出两种方式?
$arr[ ] = $
array_push($arr, $value);
[!!!]76. 说出数组涉及到的常用函数。
array &#8211;声明一个数组
count &#8212; 计算数组中的单元数目或对象中的属性个数
foreach &#8212; 遍历数组
list &#8212; 将数组中元素的值赋值给变量,批量声明变量
explode &#8212; 将字符串转成数组
implode &#8212; 将数组转成一个新字符串
array_merge &#8212; 合并一个或多个数组
is_array &#8212; 检查是否是数组
print_r &#8212; 输出数组
sort &#8212; 数组排序
array_keys &#8212; 返回数组中所有的键名
array_values &#8212; 返回数组中所有的值
key &#8212; 从关联数组中取得键名
[!!!]77. 字符串的常用函数?
trim()&#8211; 去除字符串首尾处的空白字符(或者其他字符)
strlen()&#8211; 字符串长度
substr()&#8211; 截取字符串
str_replace()&#8211; 替换字符串函数
strstr()&#8211; 查找字符串的首次出现位置,返回 第一次出现的位置开始到结尾的字符串
explode()&#8211; 将字符串分割成数组
implode()&#8211; 将数组分割成字符串
str_repeat() &#8212; 重复一个字符串
addslashes() &#8212; 转义字符串
htmlspecialchars() &#8212; HTML 实体转义
78. 以下代码的执行后是,$result 值为:
$srcArray=array('a','b','c','d');
$randValue=array_rand($srcArray);
$result=is_string($randValue);
mixed array_rand( array $input [, int $num_req ] )
从数组中随机取出一个或多个单元,它接受 input 作为输入数组和一个可选的参数num_req,指明了你想取出多少个单元 - 如果没有指定,默认为 1。
如果你只取出一个,array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。
所以使用 array_rand 函数,返回结果要么是键名,要么是数组,在这个例子中,数组是索引数组,所以返回的是整型。
79. 以下代码的执行后是,$result 值为:
$result = 1;
if (in_array($a,array('1'))) {
$result = 2;
}elseif ($a == '1') {
$result = 3;
}elseif ($a == '01') {
$result = 4;
$result = 5;
80. php 函数名是否区分大小写?
函数名是大小写无关的,不过在调用函数的时候,通常使用其在定义时相同的形式。
81.以下代码的执行后是,$result 值为:
$result = is_null($x);
is_null &#8212; 检测变量是否为 NULL,如果变量是 null 则返回 TRUE,否则返回 FALSE。
在下列情况下一个变量被认为是 NULL:
被赋值为 NULL
尚未被赋值
82. 翻转字符串中的单词,字符串仅包含大小写字母和空格,单词间使用空格分隔。如 :输入&#8221;This is PHP&#8221;,输出&#8221;PHP is This&#8221;(非必要请不要使用 PHP 自带函数)。
function reverse($str)
$arr = explode(' ',$str);
$arr = array_reverse($arr);
return implode(' ',$arr);
$str = 'This is PHP';
echo reverse($str);
83. 请列举出你所知道的全局环境变量 。
$_REQUEST;
$_SESSION;
84. 设有这样一个数组$a=array(array(id=&0),array(id=&1),array(id=&2)&#8230;&#8230;)id=&0-10000,请问你如何使用 PHP 判断 id=&500 是否在这个数组内?
使用 in_array 函数,代码如下:
$a = array(
array('id' =& 0),
array('id' =& 1),
array('id' =& 2),
array('id' =& 3),
array('id' =& 4),
array('id' =& 500)
$b = array('id' =& 500);
if (in_array($b,$a)) {
echo "Yes";
echo "No";
85. 在 PHP 中两个数组怎么连接合并在一起。
使用 array_merge()函数
86. 运行以下代码后$a $b $c 分别是?
$a = $b = $c = 0;
$a = $b && $c;
$a 为 false,$b = $c = 0
转载请注明: &
与本文相关的文章

我要回帖

更多关于 腾讯php面试题 的文章

 

随机推荐