Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:很好,条理清晰,效果完整
<?php
// *php访问函数外部变量的5种方式之一:global关键字
$username='关云长';
function sanguo():string{
global $username;
return '过五关斩六将,'.$username;
}
echo sanguo(),'<br>';
<?php
// *php访问函数外部变量的5种方式之二:$GLOBALS['$outer']
$username='赵子龙';
function sanguo():string{
return '大战长坂坡,'.$GLOBALS['username'];
}
echo sanguo(),'<br>';
<?php
// *function()use($outer){...}
$username='诸葛亮';
$sanguo=function()use($username):string{
return '草船借箭,'.$username;
};
echo $sanguo(),'<br>';
<?php
// *箭头函数:fn()=>(...)
$username='刘备';
$sanguo=fn()=>'三顾茅庐,'.$username;
echo $sanguo(),'<br>';
<?php
// *function($outer){...}
$username='张飞';
$sanguo=function($username):string{
return'仗百长茅,'.$username;
};
echo $sanguo($username),'<br>';
<?php
// *在函数外部访问函数内部的私有变量
$sanguo=function(){
// *私有变量
$username='黄忠';
// *如果外部需要这个私有变量,可以将它作为返回数据的赠品处理
// *返回一个数组:[正常返回的数据,私有变量]
return ['老当益壮,',$username];
};
// *将数组解构到独立变量的序列中:
list($a,$b)=$sanguo();
// *打印各独立变量
echo $a,$b,'<br>';
<?php
// *常量声明的两种方式:函数方式define与自定义方式const
define('USER_NAME','曹操');
const name='刘备';
function sanguo():string{
return sprintf('三国,%s,%s',USER_NAME,name);
}
echo sanguo().'<br>';
<?php
// *预定义常量与魔术常量
// *预定义常量
echo 'php版本:'.PHP_VERSION.'<br>';
echo '操作系统:'.PHP_OS.'<br>';
// *魔术常量(值为变化的)
echo '当前行号:'.__LINE__.'<br>';
echo '当前文件:'.__FILE__.'<br>';
echo '当前路径:'.__DIR__.'<br>';
<?php
// *php中字符串的单引号与双引号
// *单引号:不解析变量与转义符,适合不含变量与转义字符的静态文本
$username='曹操';
$sanguo='三国人物:\n\r $username';
echo $sanguo;
// *单引号的语法糖:nowdoc
$sanguo=<<<'rw'
<header>
<nav>
<a href="">曹操</a>
<a href="">刘备</a>
<a href="">孙权</a>
</nav>
</header>
rw;
echo $sanguo,'<hr>';
// *双引号:可解析变量及转义字符,适合包含插值变量以及特殊字符的动态模板
$username2='关云长';
$sanguo2="千里走单骑,\n\r $username2";
// echo $sanguo2.'<br>';
echo $sanguo2."\n";
// *双引号语法糖:heredoc
$sg=<<<"sanguo"
<ul>
<li>三国演义</li>
<li>$username2</li>
</ul>
sanguo;
echo $sg;
<?php
// *数组转成字符串
$sanguo=['刘备','关羽','张飞'];
echo implode(',',$sanguo);
<?php
// *字符串转成数组
$link='mysql:dbname=sanguo;root;root';
$db=explode(';',$link);
print_r($db);
<?php
// *解析数据库的连接参数
$link='mysql:dbname=sanguo;root;root';
$db=explode(';',$link);
vprintf('dsn=%s<br>username=%s<br>password=%s<br>',$db);
<?php
// *php中对字符串的操作
// *字符串的查询
$str='sanguo.cn';
echo substr($str,0,4).'<br>';
echo substr($str,6,3).'<br>';
echo substr($str,6).'<br>';
// *strstr:首次字符出现的位置之后的字符
$img='liubei.png';
echo strstr($img,'.').'<br>';
// *把扩展名中的'.'删除
echo ltrim(strstr($img,'.'),'.').'<br>';
// *获取'.'之前的文件名
echo strstr($img,'.',true).'<br>';
$str2='phpEnv.cn';
// *strpos:首次出现的索引
echo strpos($str2,'p').'<br>';
echo strpos($str2,'p',1).'<br>';
// *str_replace:字符串的替换
$demo1='E:\project\phpLearn\1c';
echo str_replace('\\','/',$demo1).'/demo1.html';
<?php
// *php中对字符串的操作2
// *批量替换
$user=['张三','李四','王五'];
$suihu=['宋江','吴用','林冲'];
$str='及时雨张三,智多星李四,豹子头王五';
echo str_replace($user,$suihu,$str).'<br>';
// *用**代替敏感词
$a='**';
echo str_replace($user,$a,$str).'<br>';
// *未去空格与去掉空格的字符串
$str2=' 三国 ';
echo strlen($str2).'<br>';
echo strlen(trim($str2)).'<br>';
// *rtrim:去掉右边:
$str3='sanguo.cn';
echo rtrim($str3,'.cn').'<br>';
// *ltrim:去掉左边:
echo ltrim($str3,'sanguo').'<br>';
// *当前服务器中的查询字符串
$url="http://phplearn.io/3c/demo14.php?a=1&b=12&c=123";
echo $_SERVER['QUERY_STRING'].'<br>';
// *把查询字符串转成数组
parse_str($_SERVER['QUERY_STRING'],$arr);
printf('<pre>%s</pre>',print_r($arr,true));
// *把统一资源定位器(网址)解析成数组
$arr=parse_url($url);
printf('<pre>%s</pre>',print_r($arr,true));