1. 数据与代码在程序中是如何体现的
<?php
// 数据:变量表示,放在数据段
$site = 'PHP中文网';
// 代码:函数表示,放在代码段
function get_site($webSite){
return $webSite . '欢迎您';
}
// 调用执行,指令一条一条的进入到CPU中
echo get_site($site);
?>
2. 数据的表示与访问
<?php
$name = 'Abby';
$age = 18;
$isGrow = true;
// 单值读取
// echo: 回显,无返回值
echo $name . '的年龄是' . $age . '<br>';
// 布尔值会发生类型转换,true => 1,false => 空
echo '是否成年:' . $isGrow . '<br>';
// 字符串
echo '姓名是 ' . $name . '<br>';
// 字符串虽然是单值,但却可以像数组一样访问
echo '我的名字的第一个字母是:' . $name{0} . '<br>';
// print: 打印,与echo功能类似,但是会有返回值:1
print('年龄:' . $age . '<br>');
echo print('年龄' . $age . '<br>'); // 会输出返回值 1
echo '<br>';
// print_r($var, false|true):以更容易理解的方式打印变量,r: readily易于理解
// 如果仅仅打印一个变量,看上去似乎与之前没有区别
print_r($name);
echo '<br>';
// 如果添加了第二参数true,则是返回信息return,而不是输出echo
echo print_r($name, true);
// 这样做,对于简单,类似单值变量的意义不大,但对于复合数据意义非凡
$data = range(1,20,2);
// 因为第二个参数true的存在,使该函数只是返回了数据,而不是直接输出
// 所以,我们可以根据自己的要求,任意的格式化需要输出的数据,使之更好阅读
echo '<pre>' . print_r($data,true) . '</pre>';
// var_export($var, false|true) 输出/返回变量的字符串表示
// 其实就是定义该变量的php代码而已,例如,字符串会自动添上定界符引号
var_export($name);
echo '<br>';
// var_dump($var1,$var2...): 打印一个或多个变量的结构,包括类型和值
var_dump($name,$age,$isGrow);
3. 索引数组与关联数组
<?php
// 数组定义
// 一. 索引数组
// 1. 定义
// 如果有$user = []; 就是追加式定义
// 直接定义,索引默认从0开始,也可自定义,并不要求连续
$user[] = 1001;
$user[] = 'admin';
$user[] = 'admin@php.cn';
// 推荐方式
$user = [1001, 'admin', 'admin@php.cn'];
// 2. 访问:单个或多个成员
// 简单变量中的echo, print 只能访问单个成员,不能输出数组
// 单个数组成员
echo $user[2] . '<br>';
print_r($user);
echo '<pre>' . print_r($user, true) . '</pre>';
var_dump($user);
echo '<hr>';
// 3. 遍历:可循环访问全部成员
// 3.1 for: 索引数组,最常用的是for循环
$res = '';
for ($i = 0; $i < count($user); $i++) {
$res .= $user[$i] . ', ';
}
// 去掉最后的', ', 输出遍历结果
echo rtrim($res, ', ') . '<hr>';
// 3.2 foreach
$res = '';
foreach ($user as $item) {
$res .= $item . ', ';
}
echo rtrim($res, ', ') . '<hr>';
// 4. 转换
// 4.1 索引数组与变量之间的转换,mvc中模板赋值会用到
list($id, $name, $email) = $user;
echo $id . '--' . $name . '--' . $email . '<br>';
// 4.2 索引数组转字符串:将数组扁平化存储会用到,例如将数组存储到数据表的字段中
$str = implode(',', $user);
echo $str . '<br>';
$sql = "INSERT `users` SET `comment` = {$str};";
echo $sql . '<br>';
// 将一个字符串转换成数组
$arr = explode(',', $str);
print_r($arr);
echo '<br>';
// 注意:索引不推荐使用while遍历,如果一定要这样做,可以这样写
// each() 有可能会在以后的版本中删除,有可能会看到不推荐使用的警告信息
while (list($key, $value) = each($user)) {
echo "[{$key}]=>{$value}<br>";
}
echo '<hr>';
// 二. 关联数组
// 1. 定义
$user = ['id' => 1001, 'name' => 'admin', 'email' => 'admin@php.cn'];
// 2. 访问
echo $user['name'] . '<br>'; // 单值访问
print_r($user);
echo '<br>';
var_dump($user);
echo '<br>';
var_export($user);
echo '<hr>';
// 3. 遍历
// 3.1 foreach 推荐使用的
foreach ($user as $key => $value) {
echo '[' . $key . '] => ' . $value . '<br>';
}
// 3.2 for 并不适合关联数组,但是借助数组指针,也可以完成遍历
$res = '';
for ($i = 0; $i < count($user); $i++) {
// 获取当前指针处的数组成员
$res .= current($user) . ', ';
// 指针前移到下一个数组成员的位置上
next($user);
}
echo rtrim($res, ', ') . '<hr>';
// 4. 转换
// 4.1 关联数组与变量之间的转换
extract($user);
echo 'id= ' . $id . ', name = ' . $name . ', email = ' . $email . '<br>';
// 既然可以将数组拆分成独立变量,就可以将独立变量再组装成关联数组: compact()
$dsn = 'mysql:host=localhost;dbname=demo;';
$username = 'root';
$password = 'root';
$linkParams = compact('dsn','username','password');
print_r($linkParams);
echo '<hr>';
// 4.2 关联数组转索引数组
print_r(array_values($user));
echo '<hr>';
// 4.3 关联数组转字符串
$str = implode('-',$user);
echo $str . '<br>';
// 字符串转数组
$arr = explode('-',$str);
print_r($arr);
echo '<hr>';
// 三. 数组排序
// sort() 以升序对数组排序
$arr = ['xiaomi','meizu','apple'];
sort($arr);
print_r($arr);
echo '<br>';
// rsort() 以降序对数组排序
rsort($arr);
print_r($arr);
echo '<br>';
$price = ['xiaomi'=>1999,'meizu'=>1799,'apple'=>5999];
// asort() 根据值,以升序对关联数组进行排序
asort($price);
print_r($price);
echo '<br>';
// arsort() 根据值,以降序对关联数组进行排序
arsort($price);
print_r($price);
echo '<br>';
// ksort() 根据键,以升序对关联数组进行排序
ksort($price);
print_r($price);
echo '<br>';
// krsort() 根据键,以降序对关联数组进行排序
krsort($price);
print_r($price);
4. 基础知识手抄
5. 总结
通过以上实例练习以及手抄基础知识,对php有了更深刻的理解和认识。