PHP题

这篇博客介绍了PHP中的引用变量,包括其定义方式及示例。还讨论了字符串的三种定义方法及其区别,强调了浮点数比较的注意事项。此外,文章详细阐述了布尔值的判断、超全局数组的作用以及预定义常量。最后,提到了文件引入、会话控制技术和PHP的常用函数,如时间日期函数和IP处理函数。
摘要由CSDN通过智能技术生成
  1. 什么是引用变量?在PHP中,用什么符号定义引用变量?
    概念:用不同的名字访问同一个变量的内容.
    定义方式:&

  2. 写出如下程序的输出结果

$data = ['a', 'b', 'c'];

foreach($data as $key => $val){
        $val = &$data[$key];
        var_dump($data);
}

答:
1.[‘a’,‘b’,‘c’]
2.[‘b’,‘b’,‘c’]
3.[‘b’,‘c’,‘c’]
在这里插入图片描述

  1. PHP中字符串可以使用哪三种定义方法以及各自的区别是什么?
    定义方式:
    单引号:不能解析变量,转义字符
    双引号:可以解析变量,转义字符,变量可以使用特殊字符和{}包含
    heredoc和newdoc

区别:
单引号效率高于双引号
Heredoc 类似于双引号
Newdoc 类似于单引号
两者都用来处理大文本

  1. 0.1+0.7 == 0.8?
    浮点类型不能用于相等的判断

  2. 布尔的七种情况,if语句中的判断
    0
    0.0
    ‘ ’
    ‘0’
    FALSE
    NULL
    array()

  3. 超全局数组
    $GLOBALS 包含下面所有的内容
    $_GET
    $_POST
    $_REWUEST 包含 $_GET, $_POST, $_COOKIE
    $_SESSION
    $_COOKIE
    $_SERVER
    $_SERVER[‘SERVER_ADDR’] 服务器的IP地址
    $_SERVER[‘REMOTE_ADDR’] 服务器的IP地址
    $_SERVER[‘SERVER_NAME’] 服务器的名称
    $_SERVER[‘REQUEST_TIME’] 请求时间
    $_SERVER[‘QUERY_STRING’] url问号后面的参数
    $_SERVER[‘HTTP_REFERER’] 上级请求的页面
    $_FILES
    $_ENV

  4. NULL
    三种情况
    直接赋值为NULL,未定义的变量,unset销毁的变量

  5. 预定义常量

__FILE__ 显示当前代码在多少行
__LINE__ 获取当前文件的绝对路径
__DIR__  获取当前文件所在路径
__FUNCTION__  获取当前函数的名称
__METHOD__ 当前方法的名称
__CLASS__ 获取当前类名
__NAMESPACE__ 获取当前命名空间
  1. 求输出
function &myFunc()
{
	static $b = 10;
	return $b;
}

$a = myFunc();
print $a;

$a = &myFunc();
$a = 100;
print myFunc();

由于 $a 和 $b 互为引用,指向同一个内存空间:
10
100

  1. 外部文件引入
    include/require
    1.如果给出路径名,则按照路径名查找,否则从include_path中查找
    2.如果include_path中也没有,则从调用脚本文件所在目录和当前目录查找
    通过get_include_path()获取 include_path

require/require_once
include/include_once
区别:
php会检查该文件是否已经被包含过,如果是则不会再次包含

  1. 系统的内置函数
    时间日期函数
    date(), strtotime(), mktime(), time(), microtime(), date_default_timezone_set()

IP 处理函数
ip2long(), long2ip()

  1. 文件的读取/写入
    打开文件,将文件内容读取出来,在开头加入Hello World,将拼接好的字符串写回文件.
$file = './hello.txt';

$handle = fopen($file, 'r');

$content = fread($handle, filesize($file));

$content = 'Hello World' . $content;

fclose($handle);

$handle = fopen($file, 'w');

fwrite($handle, $content);

fclose($handle);

  1. 目录的遍历
function visitDir($dir, $str){
        $handle = opendir($dir);
        $str = $str . '-';
        while(($d = readdir($handle)) !== false){
                if($d != '.' && $d != '..'){
                        print $str . $d . "\n";
                        if(is_dir($dir . '/' . $d)){
                                visitDir($dir . '/' . $d, $str);
                        }

                }
        }
}

$str = '';

visitDir('/home/hb/go/src/go_ldap/', $str);
  1. 会话控制技术
    通过$_GET 参数传递
    不安全

Cookie

SET: set_cookie($name, $value, $expire, $path, $domain, $secure)
GET: $_COOKIE
DELETE: set_cookie($name, '', time() - 1000);

优点:

  1. 存储在客户端,不会占用服务器资源
  2. 不安全,客户端可以禁止cookie

存储在客户端的文件 相当于会员卡

SESSION
基于COOKIE,SESSION存储于服务器,

session_start()
$_SESSION;
session_destroy()

配置:
session.auto_start
session.cookie_domain
session_cookie_lifetime
session_coolie_path
session.name
session.save_path
session.use_cookies
session.use_trans_sid

// 每100次调用session_start()的时候会有几率去清除超过1440s的文件
session.gc_probability 1
session.gc_divisor 100
session.gc_max_lifetime 1440

优点:信息安全
缺点:占用服务器资源,分布式问题

如果禁用cookie如何处理session?
可以通过url传递session_id

<a href="1.php?<?php echo session_name() . '=' . session_id(); ?>">
<a href="1.php?<?php echo SID; ?>"> // 如果开启了cookie SID为空,如果禁用了cookie SID 为session_name() . '=' . session_id()

session_set_save_handler() // 将session存储在redis或memcache

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值