当前位置: 首页 > 编程日记 > 正文

[PHP]php基础练习题学习随笔

1、解释一下PHP中常量、变量、可变变量并举例说明;超级全局变量有哪些?

  • 常量是单个值的标识符(名称),通过define()设置,在脚本中无法改变该值,常量自动全局。
<?php
#对大小写不敏感为true,默认为false
define("GREETING", "Welcome to W3School.com.cn!", true);
echo greeting;
?>
  • 变量是存储信息的容器,以$符号开头,首次赋值时被创建,变量名对大小写敏感;
<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

变量的三种作用域:

    • local
    • global (要在函数内部访问需在变量前使用global关键词声明,或使用$GLOBALS[index]数组直接调用)
    • static (函数结束时不删除该局部变量并保留最后一次调用后的值)
  • 可变变量:用一个变量的值作为另一个变量的名称 (http://www.php.net/manual/zh/language.variables.variable.php)

<?php
$a = "hello";
$$a = "world!";
echo "$a $$a"; //或者${$a}
echo "$a $hello";
?>
  • 超全局变量:在一个脚本的全部作用域中始终可用的内置变量

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

 2、字符串连接操作符、三元操作符、错误抑制操作符、执行操作符、类型操作符是什么,举例说明用法

  • 字符串连接操作符 "." 和 ".="
<?php
$a = "Hello";
$b = $a . " world!";
echo $b; // 输出 Hello world!$x="Hello";
$x .= " world!";
echo $x; // 输出 Hello world!
?>
  • 三元操作符 " ? : "

$c=($a>$b)?$a:$b

  • 错误抑制操作符"@" :屏蔽错误输出。 (博文:《深入理解PHP原理之错误抑制与内嵌HTML》)

$a = @(50/0);

  • 执行操作符"` `" : 实现服务器命令行指令。

$out = `ls -l`;

  • 类型操作符"instanceof" :检查三件事情:实例是否某个特定的类型,实例是否从某个特定的类型继承,实例或者他的任何祖先类是否实现了特定的接口。
$manager = new Employee();
…
if ($manager instanceof Employee)
echo "Yes";

3、”===“是什么?试举一个”==“是真但”===“是假的例子。

$x === $y 的意思是如果 $x 等于 $y,且它们类型相同,则返回 true。

$x=100; 
$y="100";
var_dump($x == $y); // 因为值相等,返回 true
var_dump($x === $y); // 因为类型不相等,返回 false

4、解释一下isset()、unset()、empty()

  • isset():判断变量是否已存在(配置)
  • unset() :把变量删除(释放)掉
  • empty() :判断变量是否为空
  • is_null() :判断变量是否为NULL

5、PHP的面向对象的特点?什么是接口?implements和extend的区别? (PHP 面向对象教程)

class Person
{//下面是人的成员属性var $name; //人的名字var $sex; //人的性别var $age; //人的年龄//下面是人的成员方法function say() //这个人可以说话的方法
    {echo"这个人在说话";}function run() //这个人可以走路的方法
    {echo"这个人在走路";}
}
$p1=new Person();
$p2=new Person();

要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。

implements 是实现多个接口,接口的方法一般为空,接口的这些方法必须重写;extends 是继承某个类,继承后可以使用父类的方法,也可以重写父类的方法。

6、foo()和@foo()之间有什么区别?

@foo()可以屏蔽错误输出。

7、解释一下require()、require_once()、include()、include_once()的用法
  • include():包含没有文件时会报错,产生警告,但程序继续运行;
  • require():包含没有文件时会报错,导致致命错误,程序停止运行;
  • include_once()和require_once()用法同上。但是它们都会首先检查所要包含的文件是否已载入,如果已经载入了则不会重复载入。

8、PHP5中魔术方法函数有哪几个,举例说明各自用法 (15个魔术方法的总结 )

  • __autoload() 类文件自动加载函数
  • __construct() 构造函数、__destruct()  析构函数
  • __call() 当所调用的成员方法不存在(或者没有权限)时调用,用于对错误后做一些操作或者提示信息
  • __clone() 该函数在对象克隆时自动调用,其作用是对克隆的副本做一些初始化操作
  • __get() 当所对象所调用的成员属性未声明或者级别为private或者protected等时,我们可以在这个函数里进行自己的一些操作
  • __set() 当所对未声明或者级别为private或者protected等进行赋值时调用此函数,我们可以在这个函数里进行自己的一些操作
  • __isset() 当对一个未声明或者访问级别受限的成员属性调用isset函数时调用此函数,共用户做一些操作
  • __unset() 当对一个未声明或者访问级别受限的成员属性调用unset函数时调用此函数,共用户做一些操作
  • __toString() 在将对象引用作为字符串操作时自动调用,返回一个字符串
  • __sleep() 是在序列化时自动调用的,序列化这里可以理解成将信息写如文件中更长久保存
  • __wakeup() 该魔术方法在反序列化的时候自动调用,为反序列化生成的对象做一些初始化操作
  • __set_state() 当调用var_export()时,这个静态方法会被调用(自PHP 5.1.0起有效)。本方法的唯一参数是一个数组,其中包含按array(’property’ => value, …)格式排列的类属性。
  • __invoke() 当尝试以调用函数的方式调用一个对象时,__invoke 方法会被自动调用。
  • __callStatic() 它的工作方式类似于 __call() 魔术方法,__callStatic() 是为了处理静态方法调用

9、数组的创建方式有哪些?举例说明

  • 使用array():$数组名=array(值,.......);
  • 使用compact()函数可以将一个或多个变量转换为数组
<?php
$firstname = "Peter";
$lastname = "Griffin";
$age = "38";
$result = compact("firstname", "lastname", "age");
print_r($result);
?> 
  • 使用array_combine()函数将两个数组合并成一个新数组,其中的一个数组是键名,另一个数组的值为键值。
  • 使用range()函数创建数组:$number = range(0,5); or 指定步长:$number = range(0,50,10);
  • 使用array_fill()函数:用给定的值类填充数组。  array_fill(start,number,value)

10、数组的遍历方式有哪些?举例说明

  • 使用for语句循环遍历数组:   for ($i= 0;$i< count($arr); $i++)
  • 使用foreach语句遍历数组:

foreach($arrays as $value)

foreach($arrays as $key=>$value)

  • 联合使用list()、each()和while循环遍历数组。

while(list($key,$val)= each($colors)) //list()用一步操作给一组变量进行赋值,each()返回数组中当前元素的键/值对并向后移动数组指针

11、php关联数组按照键、值正向排序:array('c'=>3, 'a'=>4, 'b'=>2, 'e'=>5)

$arr = array('c'=>3, 'a'=>4, 'b'=>2, 'e'=>5)
ksort($arr); //正向按键排序
asort($arr); //正向按值排序
rksort($arr);//反向按键排序
rasort($arr);//反向按值排序

12、对一个含有重复值的数组去重:array('a'=>1, 'b'=>2, 'c'=>3, 'd'=>4, 'a'=>1, 'b'=>3, 'd'=>4)

$arr = array('a'=>1, 'b'=>2, 'c'=>3, 'd'=>4, 'a'=>1, 'b'=>3, 'd'=>4);

$result = array_unique($arr); //只保留重复值的第一个键

13、sort()、asort()和ksort()有什么区别?分别在什么情况下使用?

  • sort() 只依据值从小到大排序,键值不参与排序
  • asort() 依据值排序,键值参与排序
  • ksort() 依据键值排序,值参与排序

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

按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改

15、如何访问和设置一个类的属性?

$object = new myclass();
$newstr = $object->test;
$object->test = "info";

16、写出php5权限控制修饰符

public private protected

17、列举php数据类型

整型(integer)、浮点型(float)、字符串型(string)和布尔型(Boolean)四种标量类型,数组(array)和对象(object)两种合成类型,空值(null)和资源(resource)两种特殊类型。

18、如何修改SESSION的生存时间

setcookie(session_name(), session_id(), time() + 86400, "/");

or

<?php
$life_time = 24*3600;
Session_set_cookie_params($life_time);
Session_start();
?>

19、简要说说PHP框架

20、一个网页地址如 http://www.phpres.com/index.html,如何得到内容?

$data = file_get_contents('http://www.phpres.com/index.html') ;

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

echo "http://".$_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF'];

22、写出数据类型int char varchar datetime text的意思,varchar和char有什么区别?

int是数字类型,char固定长度字符串,varchar可变长度字符串,datetime日期时间型,text文本字符串

23、如何调试并查看错误日志?

打开调试功能:php.ini 里设置error_reporting = E_ALL以及 display_errors = On,重启 web服务(apache)。

一般来讲,Linux系统下(以Centos为例) Php的错误日志会记录在 /var/log/httpd 下的errror_log 里,可通过tail -n 5 -f error_log查看最近几条错误日志。

24、php与apache(nginx)的关系?php代码是如何执行的?

php 是一种编程语言,Apache是一种站点服务器软件,在Apache的conf配置文件里有LoadModule php5_module modules/libphp5.so的类似语句加载php, Apache 处理请求页面时,发现页面中内嵌的 <?php> ... <?>,就会根据配置调用 php 解释器执行这段 php 代码。

25、echo,print()和print_r()有什么区别?

  • echo是PHP语句,无返回值;print和print_r是函数,可以有返回值。
  • print() 只能打印出简单类型变量的值(如int,string)
  • print_r() 可以打印出复杂类型变量的值(如数组,对象)

26、使用php写一段简单查询,查出所有姓名为”张三“的内容并打印。

$result = mysql_query("SELECT * FROM users WHERE name='张三'");
while($row=mysql_fetch_array($result))
{echo $row['name'].$row['tel'].$row['addr'];echo "<br>";
}

27、请写一个函数验证电子邮件的格式是否正确(要求使用正则)

function checkMail($mailText)
{if(ereg("^[0-9a-z][a-z0-9\._-]{1,}@[a-z0-9-]{1,}[a-z0-9]\.[a-z\.]{1,}[a-z]$", $mailText)echo "correct!";elseecho "wrong!";
}

28、不用php内置函数实现数组排序。如:array("d"=>100, "c"=>22, "a"=>22)

<?php 
$arr=array("d"=>100,"b"=>22,"c"=>22,"a"=>22);
$newArr=array();while ($arr)
{$key=null;$value=null;foreach ($arr as $k=>$v){if($v>$value||($v==$value&&$k>$key)){$key=$k;$value=$v;}}$newArr[$key]=$value;unset($arr[$key]);
}
print_r($newArr);
?>                

or http://www.blogbus.com/vontall-logs/4262770.html

转载于:https://www.cnblogs.com/bluevoid7/p/3822528.html

相关文章:

Java项目:进销存系统(java+Gui)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能介绍&#xff1a; 基本信息管理、库存管理、销售管理、订单管理、日志管理、供应商基本信息、员工基本信息、商品信息、入库管理、出库管理、剩余库存 商品信息控制层&#xff1a; /*** <p>* 前…

IDP申请直到软件上架流程 - iOS

第一&#xff1a;IDP的申请 1.先在iPhone DevCenter上注册成为iphone developer 2.加入iPhone开发程序项目iPhone Developer Program Apply Now 3.打算收费的都建议选择99刀那个&#xff0c;QTY是个数的意思。1就好。 4.选择地区china&#xff0c;(很早之前没有china&#xff0…

灭霸—个人冲刺(4)

灵魂三问&#xff1a;昨天做了什么&#xff1f;1.手机验证码 2h 2.整体框架搭建尝试 2h 目标任务量&#xff1a;100% 完成任务量&#xff1a;100% 今天要做什么&#xff1f;1.数据库建立及连接 16h 遇到困难没有&#xff1f;2.整体框架搭建时因为连接服务器分为三类&#xf…

关于 Rocksdb 的 EnvWrapper 作用的小讨论

临下班前一位做引擎的小伙伴提了个小问题&#xff0c; Rocksdb 实现了非常多的Env backend 这一些backend 可以让用户根据自己需求创建不同 公共接口backend&#xff0c;来实现自己的文件操作或者公共线程池操作。 Env* env new rocksdb::HdfsEnv(FLAGS_hdfs) 问题是&#xf…

corepython第九章:文件和输入输出

学习笔记: OS模块代码示例: 1 import os2 for tmpdir in (/tmp,rc:\users\administrator\desktop):3 #如果存在括号里面的目录&#xff0c;则break4 if os.path.isdir(tmpdir):5 break6 #如果不存在&#xff0c;则tmpdir为空值&#xff0c;即False7 else:8 pri…

Java项目:学生管理系统(无库版)(java+打印控制台)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能介绍&#xff1a; 学生成绩管理系统成绩表 用户管理操作&#xff1a; /*** 用户管理操作*/ Controller RequestMapping("/user") public class UserController {Autowiredprivate UserServi…

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②...

原文:构建ASP.NET MVC4EF5EasyUIUnity2.x注入的后台管理系统&#xff08;12&#xff09;-系统日志和异常的处理② 上一讲我们做了日志与异常的结果显示列表&#xff0c;这一节我们讲要把他应用系统中来。 首先我们在App.Common类库中创建一个通用类ResultHelper&#xff0c;这个…

爬取猫眼怦然心动电影评论

作业要求来源&#xff1a;https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159 可以用pandas读出之前保存的数据&#xff1a; newsdf pd.read_csv(rF:\duym\gzccnews.csv) 一.把爬取的内容保存到数据库sqlite3 import sqlite3with sqlite3.connect(gzccnewsdb.sqli…

TCMalloc(Thread-Caching malloc) 基本设计原理

文章目录背景如何使用架构概览1. TCMalloc Front-end1.1 小对象和大对象的内存分配过程1.2 内存释放过程1.3 Per-CPU mode1.4 Per-thread mode1.5 per-cpu 和 per-thread 运行时内存管理算法对比2. TCMalloc Middle-end2.1 Transfer Cache2.2 Central Free List2.3 Pagemap 和 …

Java项目:控制台商城系统(java+打印控制台)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能简介&#xff1a; 客户信息管理、商品信息管理、购物信息管理、退出系统 显示系统主菜单&#xff1a; public class SystemMenu {//显示系统主菜单public void showMainMenu(){System.out.println(&qu…

PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

PAT (Basic Level) Practise &#xff08;中文&#xff09;-1025. 反转链表 (25) http://www.patest.cn/contests/pat-b-practise/1025 给定一个常数K以及一个单链表L&#xff0c;请编写程序将L中每K个结点反转。例如&#xff1a;给定L为1→2→3→4→5→6&#xff0c;K为3&am…

初识Quartz(三)

为什么80%的码农都做不了架构师&#xff1f;>>> 简单作业&#xff1a; package quartz_project.example3;import java.util.Date;import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.Job…

内存分配器设计的演进

文章目录栈内存空间是否够用系统调用申请内存最简单的内存分配器实现 -- bump allocator可扩容的 Bump alloactor通过free-list 管理的 allocator通过size-buckets 维护多个free-list 的 allocatorCache friendly allocator需要考虑更多问题的allocator性能易用性本文希望描述一…

Android OpenGL ES(十一)绘制一个20面体 .

前面介绍了OpenGL ES所有能够绘制的基本图形&#xff0c;点&#xff0c;线段和三角形。其它所有复杂的2D或3D图形都是由这些基本图形构成。 本例介绍如何使用三角形构造一个正20面体。一个正20面体&#xff0c;有12个顶点&#xff0c;20个面&#xff0c;30条边构成&#xff1a;…

Java项目:学生选课系统(java+javaweb+jdbc)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能介绍&#xff1a; 用户菜单、学生管理、教师管理、课程管理、成绩排名查询 学生管理控制层&#xff1a; Controller RequestMapping("/student") public class StudentController {private …

Xtrabackup对mysql全备以及增量备份实施

Xtrabackup对mysql全备以及增量备份实施1.完全备份与恢复本文使用的是centos5.8 64位系统&#xff0c;mysql 使用5.5.35.如果要使用一个最小权限的用户进行备份&#xff0c;可基于以下&#xff1a;mysql> createuser bkuserlocalhost identified by redhat;mysql> grant …

js浅拷贝和深拷贝

浅度拷贝&#xff1a;复制一层对象的属性&#xff0c;并不包括对象里面的为引用类型的数据&#xff0c;当改变拷贝的对象里面的引用类型时&#xff0c;源对象也会改变。 深度拷贝&#xff1a;重新开辟一个内存空间&#xff0c;需要递归拷贝对象里的引用&#xff0c;直到子属性都…

关于 fallocate 文件系统预分配 的一些细粒度测试

文章目录Rocksdb 中的预分配Fallocate in rocksdb 性能测试Fallocate 使用 以及 对应配置的行为API 使用不同 Mode 的行为分配磁盘空间释放磁盘空间折叠/裁剪 文件内容清零文件 扩容文件Rocksdb 中的预分配 预分配文件存储空间 在存储引擎中用的还是比较频繁的&#xff0c;尤…

mac 使用nvm安装node

1.curl https://raw.github.com/creationix/nvm/master/install.sh | sh2。vi ~/.bash_profile 添加&#xff1a;source /Users/dujie/.nvm/nvm.sh nvm install 0.10.24 nvm use 0.10.24 # 默認使用 0.10.24 版本&#xff0c;否則每次關掉 Terminal 就得重新 nvm use 一次 $…

Java项目:人事管理系统(java+javaweb+jdbc)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能介绍&#xff1a; 登录、新增、修改、离职 员工管理控制层&#xff1a; Controller RequestMapping("/employee") public class EmployeeController {Autowiredprivate IEmployeeService em…

转:async await 的前世今生 ; 异步 线程 多线程

写的非常好,改天搬过来

ubuntu14.04初体会

2014年4月17日ubuntu新的长期支持版14.04公布了&#xff0c;中国时间18日一早就能够下载到。18日晚。在我的X200上安装上了14.04&#xff0c;算是比較早一批体会到14.04正式版的人吧。对照12.04&#xff0c;14.04提升的执行速度非常明显&#xff0c;界面改善也是令人眼前一亮&a…

Linux 下获取本机所有网卡 以及 网卡对应ip 列表

简单record 一下 #include <arpa/inet.h> // struct sockaddr_in #include <errno.h> #include <net/if.h> // struct ifreq and struct if_nameindex #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/i…

Java项目:植物大战僵尸(java+swing)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能简介&#xff1a; 植物大战僵尸、冒险模式、生存模式、解谜模式 小车服务类&#xff1a; public class CarThread extends Thread{private boolean flagtrue;private int x;private int y;private JL…

秋实大哥の恋爱物语

//裸kmp&#xff0c;劳资居然不会写&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 题意&#xff1a;中文题面自己看 解&#xff1a;差分裸kmp 因为可以上下移动&#xff0c;所以只要变化趋势相符就行&#xff0c;于是我们先做一个差分&#xff0c…

《马哥出品高薪linux运维教程》wingkeung学习笔记-linux基础入门课程5

命令&#xff1a;内部命令&#xff1a;由shell程序自带的命令叫做内部命令&#xff1b;外部命令&#xff1a;在系统的某个路径下&#xff0c;有一个与命令同名的可执行程序叫做外部命令。查看内外部命令的命令&#xff1a;type 命令命令选项&#xff1a;用于调整命令执行行为的…

八、LaTex中的表格

转载于:https://www.cnblogs.com/invisible2/p/10813964.html

基于持久内存的 单机上亿(128B)QPS -- 持久化 k/v 存储引擎

文章目录性能数据设计背景设计架构Hash 索引结构 及 PMEM空间管理形态基本API 及 实现API初始化流程写流程读流程删除流程PMEM Allocator设计主要组件空间分配流程空间释放图数据库 on KVDK 性能性能数据 这个kv 存储引擎是持久化的存储引擎&#xff0c;存储介质是PMEM&#x…

SCALA当的trait

不是特别懂&#xff0c;但感觉和RUBY当中的MIX-IN功能有几分相似&#xff0c;这又扯到了多重继承及JAVA当中的接口虚拟类了。。 package com.hengheng.scalaclass UseTrait {} trait Logger {def log(msg : String) {println("log : " msg)} } trait ConsoleLogger …

Java项目:贪吃蛇游戏(java+swing)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能简介&#xff1a; 贪吃蛇游戏 大嘴鱼洁面类。完成大嘴鱼的界面的绘制: /*** 大嘴鱼洁面类。完成大嘴鱼的界面的绘制。*/ public class BigMouthFishFrame extends JFrame{private FishPool pool null;…