基础

2.执行程序段将输出

Copy Highlighter-hljs
<?php //参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0 echo 8%(-2)."<br />"; //取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2 echo ((-8)%3)."<br />"; //输出2 echo (8%(-3))."<br />"; ?>

3.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

Copy Highlighter-hljs
<?php function my_scandir($dir) { $files=array(); if(is_dir($dir)) { if($handle=opendir($dir)) { while(($file=readdir($handle))!==false) { if($file!="." && $file!="..") { if(is_dir($dir."/".$file)) { $files[$file]=my_scandir($dir."/".$file); } else { $files[]=$dir."/".$file; } } } closedir($handle); return $files; } } } print_r(my_scandir("D:Program FilesInternet ExplorerMUI")); ?>

6 .请举例说明在你的开发过程中用什么方法来加快页面的加载速度

Copy Highlighter-hljs
答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具

7、HTTP Keep-Alive的作用

作用:Keep-Alive:使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。Web服务器,基本上都支持HTTP Keep-Alive。

缺点:对于提供静态内容的网站来说,这个功能通常很有用。但是,对于负担较重的网站来说,虽然为客户保留打开的连 接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep- Alive功能对资源利用的影响尤其突出。

解决:Keep-Alive: timeout=5, max=100timeout:过期时间5秒(对应httpd.conf里的参数是:KeepAliveTimeout),max是最多一百次请求,强制断掉连接。就是在timeout时间内又有新的连接过来,同时max会自动减1,直到为0,强制断掉。

其他#

1.PHP中几个输出函数echo,print(),print_r(),sprintf()区别

printf:是函数,把文字格式化以后输出(参看C语言)

sprintf:是函数,跟printf相似,但不打印,而是返回格式化后的文字(该函数把格式化的字符串写写入一个变量中,而不是输出来),其 他的与printf一样。

例如:

Copy Highlighter-hljs
1 $str = "Hello"; 2 $number = 123; 3 $txt = sprintf("%s world. Day number %u",$str,$number); 4 //输出: Hello world. Day number 123

2.不用新变量直接交换现有两个变量的值

Copy Highlighter-hljs
list($a, $b) = array($b, $a); 借助数组 $a = array($a,$b); $b = $a[0]; $a = $a[1];

3.写个函数来解决多线程同时读写一个文件的问题。

Copy Highlighter-hljs
<?php $fp = fopen("/tmp/lock.txt","w+"); if(flock($fp, LOCK_EX)){// 进行排它型锁定 fwrite($fp,"Write something here\n"); flock($fp, LOCK_UN);// 释放锁定 }else{ echo "Couldn't lock the file !"; } fclose($fp); ?>

3.PHP缓存技术有哪些? tp是局部还是完全缓存?

全页面静态化缓存,也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程
页面部分缓存,将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示
数据缓存,通过一个id进行请求的数据,将数据缓存到一个php文件中,id和文件是对应的,下次通过这个id进行请求时 直接读php文件
查询缓存,和数据缓存差不多,根据查询语句进行缓存;
常用的缓存技术有:redis和memcache个人认为tp应该是全局缓存 因为:tp缓存实在本地生成一个php文件来存储数据库中

4.PHP猴子选大王---最优解决算法:一群猴子排成一圈,按1,2,…,n依次编号。
然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,
直到最后只剩下一只猴子为止,那只猴子就叫做大王。
要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

Copy Highlighter-hljs

5.isset() 、empty()与is_null的区别

当变量未定义时,is_null() 和“参数本身”是不允许作为参数判断的,会报Notice警告错误;
empty , isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null 和 “参数本身”只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!

isset():仅当null和未定义,返回false;

empty():""、0、"0"、NULL、FALSE、array(),未定义,均返回true;
is_null():仅判断是否为null,未定义报警告;

6.现有一个多维数组,请编写一段代码按照数组当中age进行升序排序,重新组成一个新的数组。

Copy Highlighter-hljs
$person = array( array('name'=>'c','age'=>26), array('name'=>'d','age'=>23), array('name'=>'a','age'=>29), array('name'=>'b','age'=>27), ); 答案:不唯一 方法之一(其一冒泡排序): $count=count($person); for($i=0;$i<$count;$i++){ for($j=0;$j<$count-1;$j++){ if($person[$j]['age']>$person[$j+1]['age']){ $tmp=$person[$j]; $person[$j]=$person[$j+1]; $person[$j+1]=$tmp; } } }

4.下面代码的输出正确的是?()

Copy Highlighter-hljs
$a=array(1=>5,5=>8,22,2=>'8',81); echo $a[7]; echo $a[6]; echo $a[3]; A:空2281 B:空8122C C:8122空 D:空空空 答案:C

8.写出下面代码的结果()

Copy Highlighter-hljs
<?php $count = 5; function get_count(){ static $count = 0; return $count++; } echo $count; ++$count; echo get_count(); echo get_count(); ?> 答案:5 0 1 解析: php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。 静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。 因static $count,所以只在第一次调用get_count的时候对count赋值为0,第二次再进来这个函数,则不会第二次赋值。

6.http中几个常见的状态的状态码含义。
200 请求成功
404 找不到资源
403 没有权限
500 服务器错误
302 重定向

7.请写出自少三种截取文件名后缀的方法或函数(PHP 原生函数和自己实现函数均可)

Copy Highlighter-hljs
echo substr(strrchr($file, '.'), 1); echo substr($file, strrpos($file, '.')+1); $arr=explode('.', $file); echo $arr[count($arr)-1]; $arr=explode('.', $file); echo end($arr); echo strrev(explode('.', strrev($file))[0]); echo pathinfo($file)['extension']; echo pathinfo($file, PATHINFO_EXTENSION);

composer.json中的自动加载映射#

目前PSR-0自动加载、PSR-4自动加载、classmap生成和files引入都是被支持的,PSR-4是首推的方法,因为它提供了更大的易用性。

Copy Highlighter-hljs
## composer.json中的自动加载映射 目前PSR-0自动加载、PSR-4自动加载、classmap生成和files引入都是被支持的,PSR-4是首推的方法,因为它提供了更大的易用性。 - PSR-4 PSR-4规范了如何指定文件路径从而自动加载类,同时规范了自动加载文件的位置。乍一看这是和PSR-0重复了,实际上,在功能上确实有一部分重复。区别在于,PSR-4的规范比较干净,去除了兼容PHP5.3以前版本的内容。 PSR-4和PSR-0最大的区别是对下划线的定义不同,PSR-4中,在类名中使用下划线是没有特殊含义的,而在PSR-0的规则中,下划线或被转化为目录分隔符 在PSR-4的键下,你可以定义命名空间和路径的映射关系,当自动加载类如Foo\\Bar\\Baz时,命名空间Foo指向一个名为src/的目录意味着自动加载器将查找名为src/Bar/Baz.php文件并引用它。 命名空间的前缀必须以\\结尾,以避免类似前缀之间的冲突。在安装和更新期间,PSR-4引用全部组合到一个key=>value数组中,该数组可以在生成的文件vendor/composer/autoload_psr4.php中找到。 例子:

{
"autoload": {
"psr-4": {
"App\": "App/" // 命名空间App映射到目录App
}
}
}

Copy Highlighter-hljs
- classmap classmap引用的所有组合,都会在安装、更新的过程中生成并存储到`vendor/composer/autoload_classmap.php`文件中。 你可以使用classmap生成支持自定义加载的不遵循PSR-4规范的类库,要配置它指向的目录,以便能够准确的搜索到类文件 例子:

{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}

Copy Highlighter-hljs
- Files 如果你想要明确指定,在每次请求时都要载入某些文件,那么你可以使用files字段加载。通常作为函数库的载入方式。 例子:

{
"autoload": {
"files": ["src/MyLibrary/functions"]
}
}

Copy Highlighter-hljs
posted @   caibaotimes  阅读(155)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示
CONTENTS