PHP数据类型
打印函数
- Echo:打印值,用于单值
- Print_r():人类可读方式打印,用于数组
- Var_dump(): 打印值的结构与类型,用于对象
- Var_export(): 变量字符串表示(源代码中的声明语句)
1. (一)基本:字符串,数值,布尔,数组
1.1 字符串,引号
单引号:适合无变量,无转义字符
双引号:适合有变量,有转义字符
$data = 'php.cn';
$data = 123;
$data = true; //输出 1
$data = false; // 输出 空
// echo $data,'<br>';
// print_r($data);
// var_dump($data);
// var_export($data); //输出源代码(原始声明)
// 字符串,引号
// 单引号:适合无变量,无转义字符
// 双引号:适合有变量,有转义字符
$title = '文章标题';
echo '<a href="#">$title</a>', '<br>';
echo "<a href=\"#\">$title</a>", '<br>';
echo "<a href='#'>$title</a>", '<br>';
// 有变量和转义字符,要用双引号,要注意引号要成对出现
// JS:多行大量字符串,使用模板字面量 : 反引号 ``
// PHP 有两个方案,对应着单引号 和 双引号
// 1. nowdoc, 单引号
$title = '静夜思';
$str = <<< 'DOC'
<h3>$title</h3>
床前明月光,\n
疑是地上霜。\n
举头望明月,\n
低头思故乡。\n
DOC;
echo $str; //单引号不能解决 转义字符,\n 不起作用。
// 在每行前加上<br>,页面中强制换行
echo nl2br($str) . '<hr>';
// 2.heredoc, 双引号
$title = '静夜思';
// "ABC" 中的双引号,可以不写,是默认的
$str = <<< "ABC"
<h3>$title</h3>
床前明月光,\n
疑是地上霜。\n
举头望明月,\n
低头思故乡。\n
ABC;
// echo $str; //源码中换行了,但页面没有换行,使用 nl2br 换行
echo nl2br($str) . '<hr>';
1.2 (二)复合:数组,对象
数组:根据键名,索引数组,关联数据
索引数组
13909511100
$array = [
'0' => '老马',
'1' => 'nx77@qq.com'
];
// 索引可以省略不写
$array = [
'老马',
'nx77@qq.com'
];
关联数组:索引语义化
$array = [
'name' => '老马',
'email' => 'nx77@qq.com',
'phone' => '13909511100'
];
print_r($array['name']);
格式化输出字符串
php模板化输出
// 以源码方式,一行一个输出:第一步返回不直接输出,第二步套<pre></pre>
$str = print_r($array, true);
// echo '<pre>' . $str . '</pre>'; //方法一
// 双引号,推荐用下面的这种方法
// echo "<pre> {$str}</pre>"; //方法二
// printf:php模板化输出:方法三,更优雅
// %s: string, %d:integer, %f:float;
printf("<pre>%s</pre>", $str);
$array = [
'老马',
'nx77@qq.com',
'13909511100'
];
for输出
$res = '';
for ($i = 0; $i < count($array); $i++) {
$res = $res . "[ $array[$i] ]";
}
echo $res, '<hr>';
JS arr.reduce()归并
$res = array_reduce($array, function ($curr, $prev) {
return $curr . "[ $prev ]";
});
echo $res, '<hr>';
关联数组
$data = ['cid' => 1, 'cname' => '新闻360', 'curl' => 'news.php'];
print_r($data);
printf("<pre>%s</pre><br>", print_r($data, true));
解构赋值
// php:List(),不是函数,因为用到了 =号左边
// 解构语法: 模板 = 值
['cid' => $cid, 'cname' => $cname, 'curl' => $curl] = $data;
printf('cid=%d, cname=%s, curl=%s<br>', $cid, $cname, $curl);
关联数组快速解构
extract($data);
printf('id=%d, name=%s<br>', $cid, $cname);
索引数组解构
$data = [1, '新闻', 'news.php'];
list($cid, $cname, $curl) = $data;
printf('cid=%d, cname=%s, curl=%s<br>', $cid, $cname, $curl);
2. 对象
3. 资源类型
$fp = fopen('../1123/outline.md','r');
var_dump($fp);
// php没有 undefined, 有 null,空或无
@var_dump($a);
@var_dump(is_null($a));
// @ 屏蔽掉不致命错误提示
4. 回调
function hello (string $uname, callable $fn): string
{
return 'hello, ' . $fn($uname);
}
$fn = function($uname){
return $uname;
};
//调用
echo hello(‘老马’,$fn);