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等。
演示样例:
<?php
/*
strlen( )与 mb_strlen( )的作用各自是什么(新浪网技术部)
*/
header('Content-Type:text/html;charset=utf-8');
// (1)英文字符串
$str1 ="duang~";
echo strlen($str1);//总字节数为6,内部字符编码。单字节编码
echo "<br />";
echo mb_strlen($str1);//总字节数为6,内部字符编码
echo "<br />";
echo mb_strlen($str1,'utf-8');//总字节数或字符长度为6,指定字符编码(utf-8),多字节编码
echo "<hr />";
// (2)中文字符串
$str2 = "你是我的小苹果";
echo strlen($str2);//总字节数为21,内部字符编码,单字节编码
echo "<br />";
echo mb_strlen($str2);//总字节数为21,内部字符编码
echo "<br />";
echo mb_strlen($str2,'utf-8');//字符长度为7,指定字符编码(utf-8),多字节编码
?>
相关题目 1:实现中文字串截取无乱码的方法。
方法一,使用 php 内置函数 mb_substr()
方法二,自己定义函数,以 utf-8 为例,例如以下:
<?php
/*
相关题目 1:实现中文字串截取无乱码的方法。
*/
header('Content-Type:text/html;charset=utf-8'); //=================方法一======================= $str = "你是我的温暖阳光"; echo mb_substr($str, 2,4,'utf-8');//输出 我的温暖 // ================方法二======================= /** * utf8编码字符串截取无乱码 * @param $str string 要处理的字符串 * @param $start int 从哪个位置開始截取 * @param $length int 要截取字符的个数 * @return 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
<?php
/*
相关题目 2:怎样求解字符串“中国2北333京”的字符数(一个中文一个字符),并找到第四个字符“北”
*/
header('Content-Type:text/html;charset=utf-8');
//=================方法一=======================
$str = "中国2北333京";
echo mb_strlen($str,'utf-8');//输出字符数 8
echo mb_substr($str, 3,1,'utf-8');//输出 北
// ================方法二=======================
/**
* utf8编码字符串截取无乱码
* @param $str string 要处理的字符串
* @param $start int 从哪个位置開始截取
* @param $length int 要截取字符的个数
* @return 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);
}
/**
* utf8编码字符串计算长度
* @param $str string 要处理的字符串
* @return int 字符串的长度或字符个数
*/
function strlen_utf8($str)
{
return count(preg_split("//u", $str,-1,PREG_SPLIT_NO_EMPTY));
}
// 演示样例
$str = "中国2北333京";
echo strlen_utf8($str);//输出字符数 8
echo substr_utf8($str,3,1);//输出 北
?>
2. 下列哪个函数是用正則表達式将字符串切割到数组中 ( )
A. split
B. implode
C. explode
D. join
答案:A
3. 写出下列程序的输出结果(新浪网技术部)
<?
php
/* 写出下列程序的输出结果(新浪网技术部) */ $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']//当前执行脚本所在server主机的名称
$_FILES //包括有全部上传的文件信息
S_FILES['userfile']['name']//client机器文件的原名称
$_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 笔试题)
<?php
/*
6. 用最少的代码写一个求 3 值最大值的函数. (51.com 笔试题)
*/
// 定义函数
function maxnum($a,$b,$c)
{
return $a > $b ?
($a > $c ? $a : $c) : ($b > $c ? $b : $c); } // 调用实例 echo maxnum(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 project师笔试题)
A.php:
<?php
function fa(){
echo "in Function A\n";
}
?>
B.php:
<?php
include 'a.php';
function fb() {
fa();
echo "in Function B\n";
}
?>
C.php:
<?
php
include 'a.php'; include 'b.php'; fa(); fb();
答案:存在问题,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的效率相对照较快~
例如以下代码:
<?php
$a='hello ';
$b='php world!';
echo $a,$b.'<br />';//echo 能够用逗号分隔字符串变量来显示
print $a.$b.'<br />';//而print不能使用逗号。仅仅能用点号分隔
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
10. 用 PHP 打印出前一天的时间格式是 2006-5-10 22:21:21。
<?php
/*
用 PHP 打印出前一天的时间格式是 2006-5-10 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 />";
// 将表单中提交的时间字符串"2015-6-23"转成时间戳
$date = strtotime("2015-6-23");
echo $date;
?
>
说明:
- 使用strtotime能够将不论什么字符串的时间表示(now,seconds,day,week等)转换成时间戳,仅针对英文。
- 在实际开发的时候,strtotime很实用,由于对于表单来说。提交的数据都是字符串。
比方。“2013-4-27”须要将其转换成时间戳然后存到数据库中。
相关题目:求两个日期的差数,比如 2009-3-1 ~ 2009-4-4 的日期差数
(strtotime("2009-4-4")-strtotime("2009-3-1"))/3600*24
11. 不使用第三个变量交换两个变量的值
<?php
/*
不使用第三个变量交换两个变量的值
*/
// ================方法一==================
$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?
<?php
$num = 10;
function multipy($num){
$num = $num +10;
}
multipy($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 传送的是变量的地址而非它的值,所以在函数中改变一个变量的值时,整个应用都见到这个变量的新值。
一个 regular variable 传送给函数的是它的值,当函数改变这个变量的值时。仅仅有这个函数才见到新值,应用的其它部分仍然见到旧值。
13. 将 1234567890 转换成 1,234,567,890 每 3 ���用逗号隔开的形式。(百度)
<?
php
$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:怎样实现字符串翻转?
strrev()。只是这样的方法都不能解决中文字符串翻转的问题。会出错的。
<?
php
header("Content-Type:text/html;charset=utf-8"); /** * 反转utf8编码的中文字符串 * @param string $str * @return string */ function strrev_utf8($str) { return join("",array_reverse(preg_split("//u", $str))); } // 实例 $str = "悄悄是别离的笙箫"; echo strrev_utf8($str);
相关题目 2:如果如今有一个字符串 www.baidu.com 怎样使用 PHP 对它进行操作使字符串以 moc.udiab.输出? (亿邮)
<?php
$str = "www.baidu.com";
echo strrev(str_replace('www','',$str));
?>
14. 用 PHP 写出显示client IP 与server IP 的代码。
client IP:$_SERVER["REMOTE_ADDR"]
server端 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[ ] = "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() 以及没有不论什么属性的对象都将被觉得是空的。
isset是检測变量是否设置/定义。empty是检測已定义的变量的值是否为空。
19. 在 PHP 中,当前脚本的名称(不包含路径和查询字符串)记录在提前定义变量______中。而链接到当前页面的的前一页面 URL 记录在提前定义变量______中。
当前脚本名称:$_SERVER["PHP_SELF"]或者 \(_SERVER["SCRIPT_NAME"]; 链接到当前页面的前一页面的 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_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)
<?php $str = 'cd'; $$str = 'hotdog';//$cd = 'hotdog'; $$str .= 'ok';//$cd .= 'ok'; echo $cd; ?
>
hotdogok
相关题目:什么是可变变量?
获取一个普通变量的值作为这个可变变量的变量名。
23. 常量怎样定义? 怎样检測一个常量是否被定义?
定义常量:define()
检測常量是否定义:defined()
如:
define("TEST","happy new year!");
if( defined("TEST")){
echo TEST;
}
- 运行程序段
<?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 "c:/php/php5apache2.dll";
AddType application/x-httpd-php .php
27. 一个函数的參数不能是对变量的引用。除非在 php.ini 中把____设为 on.
allow_call_time_pass_reference :是否启用在函数调用时强制參数被依照引用传递,默认关闭。
28. 在 PHP 中。heredoc 是一种特殊的字符串,它的结束标志必须____顶格写。而且不能包括不论什么其他字符除";"
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:(腾讯)
<?
php
echo count(strlen("http://php.net"));
answer: 1
30. 写个函数用来对二维数组排序(新浪)
<?php
/**
* 根据某列对二维数组进行排序
* @param $arr array 要排序的二维数组
* @param $row string 排序根据的某列
* @param $type string asc表示正序,为默认值;desc表示逆序
* @param array 返回排序后的二维数组
*/
function array_sort($arr,$row,$type ='asc')
{
$arr_temp = array();
// 将排序根据作为数组的键名
foreach ($arr as $v) {
$arr_temp[$v[$row]] = $v;
}
// print_r($arr_temp);
// 依照键名对二维数组进行排序。并保持索引关系
if ($type == 'asc') {
ksort($arr_temp);
} elseif($type == 'desc') {
krsort($arr_temp);
}
// 返回排序结果
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)
);
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 库中已有的函数。(新浪)
<?php
/*
写 5 个不同的自己的函数。来获取一个全路径的文件的扩展名,同意封装 php 库中已有的函数。(新浪)
*/
// 方法一
function ext_name1($path){
$path_info = strrchr($path, '.');//.php
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 脚本,而且不须要不论什么server或者浏览器来执行它。通过这样的方式,只只须要 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't contain any extra white space.
END;
34. 写出下面程序的输出结果 (CBSI)
<?
php
$b = 201; $c = 40; $a = $b > $c ? 4 : 5; echo $a;
输出结果为 4
$arr = array('james', 'tom', 'symfony');
请打印出第一个元素的值,并请将数组的值用','号分隔并合并成字串输出。
打印第一个元素:echo $arr[0];
以’,’合并成字符串:echo implode(',',$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-TypeType:text/xml'; Which of the following prints 'text/xml'?
(腾讯) A. print substr(\)
text, strchr( \(text, ':')); B. print substr(\)text, strchr( \(text, ':') + 1); C. print substr(\)text, strpos( \(text, ':') + 1); D. print substr(\)text, strpos( \(text, ':') + 2); E. print substr(\)text, 0, strchr($text, ':')); answer:C
分析:
<?
php
$text = 'Content-Type:text/xml'; print substr($text, strchr($text,':'));//出错,strchr返回的是字符串 echo "<br />"; print substr($text, strchr($text,':')+1);//strchr返回的是字符串,字符串+1,返回ontent-Type:text/xml echo "<br />"; print substr($text, strpos($text,':')+1);//返回text/xml echo "<br />"; print substr($text, strpos($text,':')+2);//返回ext/xml echo "<br />"; print substr($text, 0,strchr($text,':'));//出错,strchr返回的是字符串 echo "<br />";
40. What is the value of $a?
<?php
$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? (腾讯)
<?php
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 的值是多少?
<?php
/*
执行下面程序。$a 的值是多少?
*/
$a = "hello";
$b = &$a;
unset($b);
$b = "world";
echo $a,$b;
?>
answer:hello
44. 执行下面程序,$b 的值是多少?
<?
php
/* 执行下面程序。$b的值是多少? */ $a = 1; $b = $a++; echo $a,$b;
>
answer:1
45. 执行下面程序。$x 的值是多少?
<?php
/*
执行下面程序,$x 的值是多少?
*/
$array = array();
$x = empty($array);
echo $x ?
"true":"false";
>
answer:ture
46. 将字符 09 转换成十进制数字。
(百度)
使用 intval 函数,echo intval("09"),或者使用 int 强制类型转换。
47. 请 写 一 个 函 数 。 实 现 以 下 功 能 : 字 符 串 "open_door" 转 换 成 "OpenDoor" 、"make_by_id" 转换成 "MakeById"。
<?php
/**
* 字符串转换,如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:
<?php
$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);
// 方法二
/*
$arr_tmp[$v['fid']][] = array(
'tid' => $v['tid'],
'name' => $v['name']
)
*/
}
foreach ($arr_tmp as $v) {
$arr2[] = $v;
}
print_r($arr1);
print_r($arr2);
?>
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 值为
array(2,5,7)
max 使用方法示比例如以下:
<?php
echo max(1,3,5,6,7);//7
echo "<br />";
echo max(array(2,4,5));//5
echo "<br />";
echo max(0,'hello');//0
echo "<br />";
echo max('hello','0');//hello
echo "<br />";
echo max(-1,'hello');//hello
echo "<br />";
//对于多个数组,max从左向右比較
//因此在本例中:2 == 2,可是4 < 5
$val = max(array(2,4,8),array(2,5,7));//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("MYPI",3.14);
52. 简述单引號和双引號的使用方法
双引號串中的内容能够被解释并且替换。而单引號串中的内容总被觉得是普通字符。
53. Switch 完整语法和注意事项
使用 Switch 语句能够避免冗长的 if..elseif..else 代码块,case仅仅能处理整数,或者能像整数一样运算的类型,比方char。使用时case 后用'',注意 break不能少,default是为了处理一些之前没有包括到的情况。这样更为安全。
54. 用 PHP 编写代码在页面输出当前的北京时间,格式为 “2007-01-18 09:22:03”
date_default_timezone_set('PRC');
echo date("Y-m-d H: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;
// 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. 写出例如以下程序的输出结果(小米)
<?php
header("Content-type:text/html;charset=utf-8");
$str1 = null;
$str2 = false;
echo $str1 == $str2 ? '相等' : '不相等';//相等
$str3 = '';
$str4 = 0;
echo $str3 == $str4 ? '相等' : '不相等';//相等
$str5 = 0;
$str6 = '0';
echo $str1 === $str2 ? '相等' : '不相等';//相等
?>
59. 写出例如以下程序的输出结果
<?
php
$a1 = null; $a2 = false; $a3 = 0; $a4 = ''; $a5 = '0'; $a6 = 'null'; $a7 = array(); $a8 = array(array()); echo empty($a1) ? 'true' : 'false';//ture echo '<br />'; echo empty($a2) ?
'true' : 'false';//ture echo '<br />'; echo empty($a3) ? 'true' : 'false';//ture echo '<br />'; echo empty($a4) ?
'true' : 'false';//ture echo '<br />'; echo empty($a5) ?
'true' : 'false';//ture echo '<br />'; echo empty($a6) ? 'true' : 'false';//false echo '<br />'; echo empty($a7) ? 'true' : 'false';//ture echo '<br />'; echo empty($a8) ? 'true' : 'false';//false
>
60. 写出例如以下程序的输出结果
<?php
$test = 'aaaa';
$abc = &$test;
unset($test);
echo $abc;
?
>
aaaa
61. 写出例如以下程序的输出结果
<?php
$count = 5;
function get_count()
{
static $count = 0;
return $count++;
}
echo $count;//5
++$count;//6
echo get_count();//0
echo get_count();//1
?
>
501
分析:
在 PHP 中,作用域是不重叠的,函数之外的是全局变量,函数内部定义的则是局部变量,二者是两个不同的变量,除非在函数内使用 global 显式声明使用全局变量或直接用$_GLOBALS 来引用。
62. 写出例如以下程序的输出结果
<?
php
$GLOBALS['var1'] = 5; $var2 = 1; function get_value() { global $var2; $var1 = 0; return $var2++; } get_value(); echo $var1;//5 echo $var2;//2
52
63. 写出例如以下程序的输出结果
<?php
function get_arr()
{
unset($arr[0]);
}
$arr1 = array(1,2);
$arr2 = array(1,2);
get_arr(&$arr1);
get_arr($arr2);
echo count($arr1);//1
echo count($arr2);//2
?>
12
64. \(arr = array('james', 'tom', 'symfony'); 请将’jack’加入到\)arr 数组的开头,并把 jack 打印出来。
array_unshift($arr,’jack’);
echo $arr[0];
65. \(arr = array('james', 'tom', 'symfony');请将\)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 = “gaofei@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('aa is \'aa\''."
")会输出什么?
aa is 'aa'
72. 怎样把$a = ‘123’转化成 123,列出两种方式?
<?php
$a = '123';
$a = (int)$a; //第一种方式
$a = intval($a); //另外一种方式
settype($a,'int'); //第三种方式
?>
相关题目:字符串怎么转成整数,有几种方法?怎么实现?
- 强制类型转换: (整型)字符串变量名;
- 直接转换:settype(字符串变量,整型);
- 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()-- 替换字符串函数
strstr()-- 查找字符串的首次出现位置,返回 第一次出现的位置開始到结尾的字符串
explode()-- 将字符串切割成数组
implode()-- 将数组切割成字符串
str_repeat() -- 反复一个字符串
addslashes() -- 转义字符串
htmlspecialchars() -- HTML 实体转义
78. 下面代码的运行后是,$result 值为:(奇矩互动)
<?
php
$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
mixed array_rand( array $input [, int $num_req ] )
从数组中随机取出一个或多个单元。它接受 input 作为输入数组和一个可选的參数num_req,指明了你想取出多少个单元 - 假设没有指定,默觉得 1。
假设你仅仅取出一个。array_rand() 返回一个随机单元的键名,否则就返回一个包括随机键名的数组。
所以使用 array_rand 函数,返回结果要么是键名,要么是数组,在这个样例中,数组是索引数组,所以返回的是整型。
79. 下面代码的运行后是,$result 值为: (奇矩互动)
<?php
$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;
}
echo $result;
?>
A. 1
B. 2
C. 3
D. 4
E. 5
答案:B
80. php 函数名是否区分大写和小写? (奇矩互动)
A. 不区分
B. 区分
答案:A
函数名是大写和小写无关的。只是在调用函数的时候。通常使用其在定义时同样的形式。
81.下面代码的运行后是,$result 值为:(奇矩互动)
<?
php
$x = ''; $result = is_null($x);
A. null
B. true
C. false
D. 1
答案:C
is_null -- 检測变量是否为 NULL。假设变量是 null 则返回 TRUE。否则返回 FALSE。
在下列情况下一个变量被觉得是 NULL:
- 被赋值为 NULL
- 尚未被赋值
- unset()
82. 翻转字符串中的单词。字符串仅包括大写和小写字母和空格,单词间使用空格分隔。如 :输入"This is PHP",输出"PHP is This"(非必要请不要使用 PHP 自带函数) (小米)
<?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 函数。代码例如以下:
<?
php
$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"; }else{ echo "No"; }
85. 在 PHP 中两个数组怎么连接合并在一起 (亿邮)
使用 array_merge()函数
86. 执行以上代码后$a $b $c 各自是? (卓望)
<?
php
$a = $b = $c = 0; $a = $b && $c;
\(a 为 false,\)b = $c = 0
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等。
演示样例:
<?php
/*
strlen( )与 mb_strlen( )的作用各自是什么(新浪网技术部)
*/
header('Content-Type:text/html;charset=utf-8');
// (1)英文字符串
$str1 ="duang~";
echo strlen($str1);//总字节数为6。内部字符编码,单字节编码
echo "<br />";
echo mb_strlen($str1);//总字节数为6,内部字符编码
echo "<br />";
echo mb_strlen($str1,'utf-8');//总字节数或字符长度为6,指定字符编码(utf-8),多字节编码
echo "<hr />";
// (2)中文字符串
$str2 = "你是我的小苹果";
echo strlen($str2);//总字节数为21。内部字符编码。单字节编码
echo "<br />";
echo mb_strlen($str2);//总字节数为21。内部字符编码
echo "<br />";
echo mb_strlen($str2,'utf-8');//字符长度为7。指定字符编码(utf-8)。多字节编码
?
>
相关题目 1:实现中文字串截取无乱码的方法。
方法一,使用 php 内置函数 mb_substr()
方法二。自己定义函数。以 utf-8 为例,例如以下:
<?php
/*
相关题目 1:实现中文字串截取无乱码的方法。
*/
header('Content-Type:text/html;charset=utf-8');
//=================方法一=======================
$str = "你是我的温暖阳光";
echo mb_substr($str, 2,4,'utf-8');//输出 我的温暖
// ================方法二=======================
/**
* utf8编码字符串截取无乱码
* @param $str string 要处理的字符串
* @param $start int 从哪个位置開始截取
* @param $length int 要截取字符的个数
* @return 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
<?php
/*
相关题目 2:怎样求解字符串“中国2北333京”的字符数(一个中文一个字符),并找到第四个字符“北”
*/
header('Content-Type:text/html;charset=utf-8');
//=================方法一=======================
$str = "中国2北333京";
echo mb_strlen($str,'utf-8');//输出字符数 8
echo mb_substr($str, 3,1,'utf-8');//输出 北
// ================方法二=======================
/**
* utf8编码字符串截取无乱码
* @param $str string 要处理的字符串
* @param $start int 从哪个位置開始截取
* @param $length int 要截取字符的个数
* @return 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);
}
/**
* utf8编码字符串计算长度
* @param $str string 要处理的字符串
* @return int 字符串的长度或字符个数
*/
function strlen_utf8($str)
{
return count(preg_split("//u", $str,-1,PREG_SPLIT_NO_EMPTY));
}
// 演示样例
$str = "中国2北333京";
echo strlen_utf8($str);//输出字符数 8
echo substr_utf8($str,3,1);//输出 北
?>
2. 下列哪个函数是用正則表達式将字符串切割到数组中 ( )
A. split
B. implode
C. explode
D. join
答案:A
3. 写出下列程序的输出结果(新浪网技术部)
<?php
/*
写出下列程序的输出结果(新浪网技术部)
*/
$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']//当前执行脚本所在server主机的名称
$_FILES //包括有全部上传的文件信息
S_FILES['userfile']['name']//client机器文件的原名称
$_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 笔试题)
<?
php
/* 6. 用最少的代码写一个求 3 值最大值的函数. (51.com 笔试题) */ // 定义函数 function maxnum($a,$b,$c) { return $a > $b ? ($a > $c ?
$a : $c) : ($b > $c ?
$b : $c); } // 调用实例 echo maxnum(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 project师笔试题)
A.php:
<?php
function fa(){
echo "in Function A\n";
}
?>
B.php:
<?
php
include 'a.php'; function fb() { fa(); echo "in Function B\n"; }
>
C.php:
<?php
include 'a.php';
include 'b.php';
fa();
fb();
?>
答案:存在问题,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的效率相对照较快~
例如以下代码:
<?
php
$a='hello '; $b='php world!'; echo $a,$b.'<br />';//echo 能够用逗号分隔字符串变量来显示 print $a.$b.'<br />';//而print不能使用逗号,仅仅能用点号分隔 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
10. 用 PHP 打印出前一天的时间格式是 2006-5-10 22:21:21。
<?php
/*
用 PHP 打印出前一天的时间格式是 2006-5-10 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 />";
// 将表单中提交的时间字符串"2015-6-23"转成时间戳
$date = strtotime("2015-6-23");
echo $date;
?>
说明:
- 使用strtotime能够将不论什么字符串的时间表示(now,seconds,day,week等)转换成时间戳。仅针对英文。
- 在实际开发的时候,strtotime很实用,由于对于表单来说,提交的数据都是字符串。比方,“2013-4-27”须要将其转换成时间戳然后存到数据库中。
相关题目:求两个日期的差数,比如 2009-3-1 ~ 2009-4-4 的日期差数
(strtotime("2009-4-4")-strtotime("2009-3-1"))/3600*24
11. 不使用第三个变量交换两个变量的值
<?php
/*
不使用第三个变量交换两个变量的值
*/
// ================方法一==================
$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?
<?php
$num = 10;
function multipy($num){
$num = $num +10;
}
multipy($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 传送的是变量的地址而非它的值。所以在函数中改变一个变量的值时。整个应用都见到这个变量的新值。
一个 regular variable 传送给函数的是它的值。当函数改变这个变量的值时。仅仅有这个函数才见到新值,应用的其它部分仍然见到旧值。
13. 将 1234567890 转换成 1,234,567,890 每 3 ���用逗号隔开的形式。(百度)
<?php
$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:怎样实现字符串翻转?
strrev()。只是这样的方法都不能解决中文字符串翻转的问题,会出错的。
<?
php
header("Content-Type:text/html;charset=utf-8"); /** * 反转utf8编码的中文字符串 * @param string $str * @return string */ function strrev_utf8($str) { return join("",array_reverse(preg_split("//u", $str))); } // 实例 $str = "悄悄是别离的笙箫"; echo strrev_utf8($str);
相关题目 2:如果如今有一个字符串 www.baidu.com 怎样使用 PHP 对它进行操作使字符串以 moc.udiab.输出? (亿邮)
<?php
$str = "www.baidu.com";
echo strrev(str_replace('www','',$str));
?>
14. 用 PHP 写出显示client IP 与server IP 的代码。
client IP:$_SERVER["REMOTE_ADDR"]
server端 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[ ] = "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() 以及没有不论什么属性的对象都将被觉得是空的。
isset是检測变量是否设置/定义,empty是检測已定义的变量的值是否为空。
19. 在 PHP 中。当前脚本的名称(不包含路径和查询字符串)记录在提前定义变量______中;而链接到当前页面的的前一页面 URL 记录在提前定义变量______中。
当前脚本名称:$_SERVER["PHP_SELF"]或者 \(_SERVER["SCRIPT_NAME"]; 链接到当前页面的前一页面的 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_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)
<?php $str = 'cd'; $$str = 'hotdog';//$cd = 'hotdog'; $$str .= 'ok';//$cd .= 'ok'; echo $cd; ?
>
hotdogok
相关题目:什么是可变变量?
获取一个普通变量的值作为这个可变变量的变量名。
23. 常量怎样定义? 怎样检測一个常量是否被定义?
定义常量:define()
检測常量是否定义:defined()
如:
define("TEST","happy new year!");
if( defined("TEST")){
echo TEST;
}
- 运行程序段
<?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 "c:/php/php5apache2.dll";
AddType application/x-httpd-php .php
27. 一个函数的參数不能是对变量的引用,除非在 php.ini 中把____设为 on.
allow_call_time_pass_reference :是否启用在函数调用时强制參数被依照引用传递,默认关闭。
28. 在 PHP 中。heredoc 是一种特殊的字符串,它的结束标志必须____顶格写,而且不能包括不论什么其他字符除";"
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:(腾讯)
<?php
echo count(strlen("http://php.net"));
?
>
answer: 1
30. 写个函数用来对二维数组排序(新浪)
<?
php
/** * 根据某列对二维数组进行排序 * @param $arr array 要排序的二维数组 * @param $row string 排序根据的某列 * @param $type string asc表示正序,为默认值。desc表示逆序 * @param array 返回排序后的二维数组 */ function array_sort($arr,$row,$type ='asc') { $arr_temp = array(); // 将排序根据作为数组的键名 foreach ($arr as $v) { $arr_temp[$v[$row]] = $v; } // print_r($arr_temp); // 依照键名对二维数组进行排序,并保持索引关系 if ($type == 'asc') { ksort($arr_temp); } elseif($type == 'desc') { krsort($arr_temp); } // 返回排序结果 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) ); 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 库中已有的函数。(新浪)
<?php
/*
写 5 个不同的自己的函数。来获取一个全路径的文件的扩展名,同意封装 php 库中已有的函数。
(新浪) */
// 方法一 function ext_name1($path){ $path_info = strrchr($path, '.');//.php 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 脚本,而且不须要不论什么server或者浏览器来执行它。通过这样的方式。只只须要 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't contain any extra white space.
END;
34. 写出下面程序的输出结果 (CBSI)
<?
php
$b = 201; $c = 40; $a = $b > $c ?
4 : 5; echo $a;
输出结果为 4
$arr = array('james', 'tom', 'symfony');
请打印出第一个元素的值,并请将数组的值用','号分隔并合并成字串输出。
打印第一个元素:echo $arr[0];
以’,’合并成字符串:echo implode(',',$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-TypeType:text/xml'; Which of the following prints 'text/xml'?
(腾讯) A. print substr(\)
text, strchr( \(text, ':')); B. print substr(\)text, strchr( \(text, ':') + 1); C. print substr(\)text, strpos( \(text, ':') + 1); D. print substr(\)text, strpos( \(text, ':') + 2); E. print substr(\)text, 0, strchr($text, ':')); answer:C
分析:
<?php
$text = 'Content-Type:text/xml';
print substr($text, strchr($text,':'));//出错。strchr返回的是字符串
echo "<br />";
print substr($text, strchr($text,':')+1);//strchr返回的是字符串,字符串+1,返回ontent-Type:text/xml
echo "<br />";
print substr($text, strpos($text,':')+1);//返回text/xml
echo "<br />";
print substr($text, strpos($text,':')+2);//返回ext/xml
echo "<br />";
print substr($text, 0,strchr($text,':'));//出错。strchr返回的是字符串
echo "<br />";
?>
40. What is the value of $a?
<?
php
$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?
(腾讯)
<?php
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 的值是多少?
<?php
/*
执行下面程序,$a 的值是多少?
*/
$a = "hello";
$b = &$a;
unset($b);
$b = "world";
echo $a,$b;
?>
answer:hello
44. 执行下面程序。$b 的值是多少?
<?
php
/* 执行下面程序,$b的值是多少? */ $a = 1; $b = $a++; echo $a,$b;
answer:1
45. 执行下面程序。$x 的值是多少?
<?php
/*
执行下面程序,$x 的值是多少?
*/
$array = array();
$x = empty($array);
echo $x ? "true":"false";
?>
answer:ture
46. 将字符 09 转换成十进制数字。
(百度)
使用 intval 函数,echo intval("09"),或者使用 int 强制类型转换。
47. 请 写 一 个 函 数 , 实 现 以 下 功 能 : 字 符 串 "open_door" 转 换 成 "OpenDoor" 、"make_by_id" 转换成 "MakeById"。
<?php
/**
* 字符串转换,如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:
<?php
$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);
// 方法二
/*
$arr_tmp[$v['fid']][] = array(
'tid' => $v['tid'],
'name' => $v['name']
)
*/
}
foreach ($arr_tmp as $v) {
$arr2[] = $v;
}
print_r($arr1);
print_r($arr2);
?>
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 值为
array(2,5,7)
max 使用方法示比例如以下:
<?php
echo max(1,3,5,6,7);//7
echo "<br />";
echo max(array(2,4,5));//5
echo "<br />";
echo max(0,'hello');//0
echo "<br />";
echo max('hello','0');//hello
echo "<br />";
echo max(-1,'hello');//hello
echo "<br />";
//对于多个数组,max从左向右比較
//因此在本例中:2 == 2,可是4 < 5
$val = max(array(2,4,8),array(2,5,7));//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("MYPI",3.14);
52. 简述单引號和双引號的使用方法
双引號串中的内容能够被解释并且替换。而单引號串中的内容总被觉得是普通字符。
53. Switch 完整语法和注意事项
使用 Switch 语句能够避免冗长的 if..elseif..else 代码块,case仅仅能处理整数,或者能像整数一样运算的类型。比方char。使用时case 后用''。注意 break不能少,default是为了处理一些之前没有包括到的情况,这样更为安全。
54. 用 PHP 编写代码在页面输出当前的北京时间。格式为 “2007-01-18 09:22:03”
date_default_timezone_set('PRC');
echo date("Y-m-d H: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;
// 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. 写出例如以下程序的输出结果(小米)
<?php
header("Content-type:text/html;charset=utf-8");
$str1 = null;
$str2 = false;
echo $str1 == $str2 ?
'相等' : '不相等';//相等 $str3 = ''; $str4 = 0; echo $str3 == $str4 ? '相等' : '不相等';//相等 $str5 = 0; $str6 = '0'; echo $str1 === $str2 ? '相等' : '不相等';//相等
>
59. 写出例如以下程序的输出结果
<?php
$a1 = null;
$a2 = false;
$a3 = 0;
$a4 = '';
$a5 = '0';
$a6 = 'null';
$a7 = array();
$a8 = array(array());
echo empty($a1) ? 'true' : 'false';//ture
echo '<br />';
echo empty($a2) ? 'true' : 'false';//ture
echo '<br />';
echo empty($a3) ?
'true' : 'false';//ture echo '<br />'; echo empty($a4) ? 'true' : 'false';//ture echo '<br />'; echo empty($a5) ?
'true' : 'false';//ture echo '<br />'; echo empty($a6) ?
'true' : 'false';//false echo '<br />'; echo empty($a7) ? 'true' : 'false';//ture echo '<br />'; echo empty($a8) ? 'true' : 'false';//false
>
60. 写出例如以下程序的输出结果
<?php
$test = 'aaaa';
$abc = &$test;
unset($test);
echo $abc;
?>
aaaa
61. 写出例如以下程序的输出结果
<?php
$count = 5;
function get_count()
{
static $count = 0;
return $count++;
}
echo $count;//5
++$count;//6
echo get_count();//0
echo get_count();//1
?
>
501
分析:
在 PHP 中。作用域是不重叠的,函数之外的是全局变量,函数内部定义的则是局部变量,二者是两个不同的变量,除非在函数内使用 global 显式声明使用全局变量或直接用$_GLOBALS 来引用。
62. 写出例如以下程序的输出结果
<?php
$GLOBALS['var1'] = 5;
$var2 = 1;
function get_value()
{
global $var2;
$var1 = 0;
return $var2++;
}
get_value();
echo $var1;//5
echo $var2;//2
?>
52
63. 写出例如以下程序的输出结果
<?php
function get_arr()
{
unset($arr[0]);
}
$arr1 = array(1,2);
$arr2 = array(1,2);
get_arr(&$arr1);
get_arr($arr2);
echo count($arr1);//1
echo count($arr2);//2
?>
12
64. \(arr = array('james', 'tom', 'symfony'); 请将’jack’加入到\)arr 数组的开头,并把 jack 打印出来。
array_unshift($arr,’jack’);
echo $arr[0];
65. \(arr = array('james', 'tom', 'symfony');请将\)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 = “gaofei@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('aa is \'aa\''."
")会输出什么?
aa is 'aa'
72. 怎样把$a = ‘123’转化成 123,列出两种方式?
<?
php
$a = '123'; $a = (int)$a; //第一种方式 $a = intval($a); //另外一种方式 settype($a,'int'); //第三种方式
相关题目:字符串怎么转成整数。有几种方法?怎么实现?
- 强制类型转换: (整型)字符串变量名;
- 直接转换:settype(字符串变量,整型);
- 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()-- 替换字符串函数
strstr()-- 查找字符串的首次出现位置,返回 第一次出现的位置開始到结尾的字符串
explode()-- 将字符串切割成数组
implode()-- 将数组切割成字符串
str_repeat() -- 反复一个字符串
addslashes() -- 转义字符串
htmlspecialchars() -- HTML 实体转义
78. 下面代码的运行后是。$result 值为:(奇矩互动)
<?
php
$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
mixed array_rand( array $input [, int $num_req ] )
从数组中随机取出一个或多个单元,它接受 input 作为输入数组和一个可选的參数num_req。指明了你想取出多少个单元 - 假设没有指定。默觉得 1。
假设你仅仅取出一个,array_rand() 返回一个随机单元的键名。否则就返回一个包括随机键名的数组。
所以使用 array_rand 函数。返回结果要么是键名,要么是数组。在这个样例中,数组是索引数组,所以返回的是整型。
79. 下面代码的运行后是,$result 值为: (奇矩互动)
<?
php
$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; } echo $result;
A. 1
B. 2
C. 3
D. 4
E. 5
答案:B
80. php 函数名是否区分大写和小写?
(奇矩互动)
A. 不区分
B. 区分
答案:A
函数名是大写和小写无关的,只是在调用函数的时候,通常使用其在定义时同样的形式。
81.下面代码的运行后是,$result 值为:(奇矩互动)
<?php
$x = '';
$result = is_null($x);
?>
A. null
B. true
C. false
D. 1
答案:C
is_null -- 检測变量是否为 NULL,假设变量是 null 则返回 TRUE,否则返回 FALSE。
在下列情况下一个变量被觉得是 NULL:
- 被赋值为 NULL
- 尚未被赋值
- unset()
82. 翻转字符串中的单词。字符串仅包括大写和小写字母和空格,单词间使用空格分隔。
如 :输入"This is PHP"。输出"PHP is This"(非必要请不要使用 PHP 自带函数) (小米)
<?
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 函数,代码例如以下:
<?php
$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";
}else{
echo "No";
}
?
>
85. 在 PHP 中两个数组怎么连接合并在一起 (亿邮)
使用 array_merge()函数
86. 执行以上代码后$a $b $c 各自是? (卓望)
<?php
$a = $b = $c = 0;
$a = $b && $c;
?>
\(a 为 false,\)b = $c = 0