php面试题mysql如果b>a用a_php面试题全面解析(2)

问题:

1、echo() print() 和print_r()的区别

答:echo是语言结构 ,无返回值;print()功能和echo基本相同 不同的是 print有返回值,返回值总是1

print_r是递归打印,用户输出数组对象,永远返回true

2、如何实现字符串的翻转?

strrev()  如果不准用PHP内置函数,那就自己实现一个

function str_fanzhuan($_str){

$len=strlen($_str);

$_newStr="";

for($i=$len;$i>=0;$i--){

$_newStr.=$_str[$i];

}

return $_newStr;

}

这就实现了字符串的翻转。

3、写出中文字符截取无乱码的方法

mb_substr()

4、使用PHP写一段简单的查询,查出所有姓名中为张三的内容并打印出来。

解题步骤:

1、连接数据库   指定数据库

2、指定查询字符集

3、简单的查询语句

4、遍历整个查询结果

5、关闭结果集  关闭数据库连接

header("Content-type:text/html;charset=utf-8");

define("HOST","127.0.0.1");

define("USER","root");

define("PASS","song");

define("DB","newcimie");

$mysqli=new mysqli(HOST,USER,PASS,DB);

if(mysqli_connect_errno()){

echo mysqli_connect_error();

echo "数据库连接错误";

exit;

}

print_r($mysqli->client_info);

echo "


";

print_r($mysqli->field_count);

echo "


";

print_r($mysqli->server_info);

echo "


";

print_r($mysqli->host_info);

echo "


";

exit;

$mysqli->set_charset("utf8");

$sql="select id,title from web_ads";

$res=$mysqli->query($sql);

$_data=[];

if($res){

while($_obj=$res->fetch_object()){

$_data[]=$_obj;

}

}

$res->close();

$mysqli->close();

print_r($_data);

$conn=mysql_connect("127.0.0.1:3306","root","song");

if(!$conn){

echo "数据库连接错误";

echo mysql_error();

exit;

}

mysql_select_db("test");

mysql_query("set names utf8");

$_res=mysql_query("select * from web_aa");

$_data=array();

if($_res){

while($_obj=mysql_fetch_object($_res)){

$_data[]=$_obj;

}

}

echo mysql_num_rows($_res);

mysql_free_result($_res); //释放结果集内存

mysql_close();

print_r($_data);

/*

mysql_affected_rows() 返回上次sql语句影响的条数

mysql_last_id() 返回上一步 INSERT 操作产生的 ID

mysql_query($sql) — 发送一条 MySQL 查询

mysql_result($_res) — 取得结果数据

mysql_select_db("test") — 选择 MySQL 数据库

mysql_set_charset("utf8") — 设置客户端的字符集

*/

5、mysql_pconnect 和mysql_connnect() 的区别

当连接的时候,本函数先尝试寻找在同一个主机上用同样用户名和密码打开的(持久)连接,如果找到,则返回此连接表示,而不打开新连接。其次当脚本执行完毕后,到sql服务器的连接不会被关闭。此连接将保持打开状态以备以后使用(mysql_close()不会关闭由 mysql_pconnect() 打开的连接)

6、请看下面代码,并写出 b.php得到的结果html>

我是页面 a 

b.php

var_dump($_POST['c']);

echo "


";

var_dump($_POST['a']);

?>

请问  $_POST['c'] 的结果是什么  ?   $_POST['a'] 的结果又是什么

答案: $_POST['c'] 结果 NULL    $_POST['a'] 结果 NULL

并会提示 Notice:  Undefined index: c in 的一个错误提示

7、错误提醒级别:

error_reporting(0);   //关闭所有的PHP错误

// 关闭所有PHP错误报告

error_reporting(0);

// Report simple running errors

error_reporting(E_ERROR | E_WARNING | E_PARSE);

// 报告 E_NOTICE也挺好 (报告未初始化的变量

// 或者捕获变量名的错误拼写)

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// 除了 E_NOTICE,报告其他所有错误

error_reporting(E_ALL ^ E_NOTICE);

// 报告所有 PHP 错误 (参见 changelog)

error_reporting(E_ALL);

// 报告所有 PHP 错误

error_reporting(-1);

// 和 error_reporting(E_ALL); 一样

ini_set('error_reporting', E_ALL);

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);

1 E_ERROR 致命的运行时错误

2 E_WARNING 运行时警告(非致命性错误)

4 E_PARSE 编译时解析错误

8 E_NOTICE 运行时提醒(经常是bug,也可能是有意的)

16 E_CORE_ERROR PHP启动时初始化过程中的致命错误

32 E_CORE_WARNING PHP启动时初始化过程中的警告(非致命性错)

64 E_COMPILE_ERROR 编译时致命性错

128 E_COMPILE_WARNING 编译时警告(非致命性错)

256 E_USER_ERROR 用户自定义的致命错误

512 E_USER_WARNING 用户自定义的警告(非致命性错误)

1024 E_USER_NOTICE 用户自定义的提醒(经常是bug,也可能是有意的)

2048 E_STRICT 编码标准化警告(建议如何修改以向前兼容)

8、PHP的八大类型

四种标量类型:

boolean (布尔型)

integer (整型)

float (浮点型, 也称作 double)

string (字符串)

两种复合类型:

array (数组)

object (对象)

最后是两种特殊类型:

resource (资源)

NULL (NULL)

9、删除PHP数组中头部、尾部、任意元素的实现代码

删除头部:array_shift(array)

删除尾部:array_pop(array)

array_push($arr,["id"=>15,"name"=>"asdf"]) 放在数组尾部一个元素

array_unshift($arr,["id"=>1,"name"=>"asdf"]);  放在数组的第一个

删除任意元素的代码: unset($array[5])   unset($array[8])

10、获取文件的创建时间、最后访问时间、修改时间

fileatime($file)  获取上一次的访问时间

filemtime($file) 获取上一次修改时间

11、将数组中重复的元素去掉,使用哪个函数?

array_unique

只是用于一维数组

12、写出计算时长的一个函数   几秒前    几分钟前  几小时前  几天前//写出计算时长的一个函数   几秒前    几分钟前  几小时前  几天前

function formatTime($_time){

//如果是时间戳,则不用转换,如果不是,需要进行转换

if(!(is_numeric($_time) && strlen($_time)==10)){

$_time=strtotime($_time);

}

$_nowtime=time();

$_diff=$_nowtime-$_time;

$day=60*60*24;

$hour=60*60;

$fen=60;

$_str="";

if($_diff>$day){

$_str=floor($_diff/$day)."天前";

}else if($_diff>$hour){

$_str=floor($_diff/$hour)."小时前";

}else if($_diff>$fen){

$_str=floor($_diff/$fen)."分钟前";

}else{

$_str=$_diff."秒前";

}

return $_str;

}

echo formatTime("2017-11-16 11:29:44");

13、html代码在页面上显示,请问使用哪个函数?

htmlentities($str);  此函数是有第二个参数的,意思就是转义的范围  ENT_COMPAT(默认,只解释双引号 不解析单引号)   ENT_QUOTES( 单双引号都解析)

或  htmlspecialchars()

本函数各方面都和一样, 除了htmlentities()会转换所有具有 HTML 实体的字符

它的反函数 : html_entity_decode()       htmlspecialchars_decode()

14、将所有代码去掉html标签,并保留 a 标签

strip_tags($str,"") 去掉 $str 中的标签,保留a标签  如果保留多个标签"

15、写出php把字符转换成大写、小写、首字母大写 的函数

strtoupper()  //全部小写

strtolower()  //全部大写

ucfirst() //单词首字母转换成大写

ucworlds() //所有单词首字母均转换成大写

02514d1225647858572ddf77398b580f.png

16、如何获取当前执行脚本路径,包括所得到的参数$_SERVER['REQUEST_URI'];

echo $_SERVER['PHP_SELF'];

//返回文件名  如果带有pathinfo路径,照样会返回pathinfo路径的内容

echo "
";

echo $_SERVER['SCRIPT_NAME'];

//只返回文件路径和文件名

$_SERVER['REQUEST_URI']

$_SERVER['QUERY_STRING'] //返回url中的参数部分

$_SERVER['SCRIPT_FILENAME'] //返回当前执行脚本文件的绝对地址

$_SERVER['HTTP_HOST']  //返回当前url的域名

$_SERVER['HTTP_USER_AGENT'] //返回来访者设备的参数信息

18、如何判断是不是ajax请求?

判断header头中是否包含有  X-Requested-With 如果包含有,是否等于 XMLHttpRequest 如果也是,那么就是ajax请求了。

public function isXmlHttpRequest()

{

return 'XMLHttpRequest' == $this->headers->get('X-Requested-With');

}

17、请写出以下 的值 是什么

$a="false"

empty($a) ---------->false;

is_null($a) ---------->false

isset($a)---------->true

if($a) ----------> true

gettype($a)------->string

965ef6bdd507c1165ee399ebb7676307.png

Linux基础考察点:

写出尽可能多的linux命令?

mount

shutdown

reboot

unmount

useradd

groupadd

userdel

ping

netstat

ifconfig

hostname

ssh

clear

who

yum

locate

find

head

tail

less

more

ln 建立连接  加上 -s 就是软连接

touch

unlink

rename

mv

pwd

ls

cp

rm

chown

chgrp

zip

unzip

ftp

scp

定时任务

crontab -e

crontab -l

* * * * * 命令 (分时日月周)

at命令:

at 2:00 tomorrow

at>/home/jason/do_job

at>ctrl+d 退出

9fd61511d3d75a194b2bb11309d52875.png

shell基础

开头使用  #!指定脚本解释器,例如   #!/bin/bash

编写具体功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值