• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
没有了

第4章 0421-作用域 常量 字符串函数

Data: 2018-01-19 04:04:56Form: JournalClick: 1

问题集合:

1.  我在图标网站拿的图标是彩色的,到我本地需要给它加样式才有颜色,能不能不加然后原样显示呢?

image.png

答:iconfont.css 只能设置单色的图标,可以使用Symbol,这里有相应的引入方式 https://www.iconfont.cn/help/detail?spm=a313x.7781069.1998910419.d8cf4382a&helptype=code

2.  我这个不选就变成0 能不能行,还是要显示相应的计算结果?

image.png

答:单品的金额应该是对应 数量*单价,选择只是决定单品金额是否纳入总金额

3.  出现报错?

image.png

答:少了;

image.png

4.  这插件 大家有用吗?

image.png

答:该插件并不能直接运行, 需要根据不同语言要求, 进行配置, 例如不同语言的编译/解析器/接口,例如c/c++,还是要下载并安装c/c++编译器,如果不是默认项,还要为它写一个配置文件。

5.  感觉一样的 但就是报红线?

image.png

答:$name,前后定义使用不一致

image.png

6.  为嘛 加一个 string?

image.png

答:定义函数返回值类型




demo1:作用域

<?php
// ! 作用域

// * php只有函数作用域,没有块作用, 函数之外全是全局作用域
if (true) {
    $a = 10;
    //js
    // let $a = 10;
}

echo $a, '<br>';

$name = '猪老师';

$hello = function (): string {
//函数中不能访问到外部的变量,这和js不一样
return 'Hello , ' . $name;
};

echo $hello() . '<hr>';

// ? 1.  global
$hello = function (): string {
    // 使用关键字 global引用一下外部变量
    global $name;
    return 'Hello , ' . $name;
};

echo $hello() . '<hr>';

// ? 2.  use ()
$hello = function () use ($name): string {
    return 'Hello , ' . $name;
};

echo $hello() . '<hr>';

// 'name' => $name
// print_r($GLOBALS['name']);


// ? 3.  $GLOBALS
$hello = function (): string {
    return 'Hello , ' . $GLOBALS['name'];
};

echo $hello() . '<hr>';

$hello = function (): string {
    // 私有变量 会覆盖全局中的同名变量
    $name = '牛老师';
    return 'Hello , ' . $name;
};

echo $hello() . '<hr>';
demo2:自定义常量 
<?php

// ! 自定义常量
// 1. 声明
// 函数
define('USER_NAME', 'admin');
// const, 与 js 是一样的, 用在类中
const EMAIL = '498668472@qq.com';

function hello(): string
{
    return sprintf('Hello , %s, (%s)', USER_NAME, EMAIL);
}

echo hello() . '<hr>';


/**
 * 1. 默认全局有效
 * 2. define, 可以用在if中, 但不能用在class中
 * 3. const, 编译阶段处理, 速度最快, 必须写到作用域的顶部,适合声明类常量,不能用在if中
 */

define('', 'php中文网');
// ''变量名, 是否合法?
echo '';
// 使用 一个函数来获取
echo constant('') . '<hr>';

// ! 预定义常量

// define('PHP_VERSION', '7.3.1');
echo 'PHP版本: ' . PHP_VERSION . '<br>';
echo '操作系统: ' . PHP_OS . '<hr>';

// ! 魔术常量

/**
 * 常量二特征
 * 1. 必须要有一个确定的值
 * 2. 不能更新
 *
 * 魔术常量: 总是有一个特定的值,但是用户不能更新,由系统来维护
 */

echo '当前行号 : ' . __LINE__ . '<br>';
echo '当前文件 : ' . __FILE__ . '<br>';
echo '当前文件路径 : ' . __DIR__ . '<br>';
demo3:字符串
<?php
// ! 字符串

// ! 1. 纯文本: 单引号
$domain = 'www.php.cn';
echo $domain . '<hr>';

// ! 2. 纯文本的语法糖: nowdoc
$str = <<< 'TEXT'
    <header>
        <nav>
            <a href="">index</a>
            <a href="">video</a>
            <a href="">article</a>
        </nav>
    </header>
TEXT;
echo $str . '<hr>';

// ! 3. 模板: 双引号
$site = "PHP中文网 ($domain)";
echo $site . '<br>';

// ! 4. 模板语法糖: heredoc
$tpl = <<< PHPCN
    <ul style="border:1px solid">
        <li>PHP中文网</li>
        <li>$domain</li>
    </ul>
PHPCN;

echo $tpl;
demo4:字符串常用函数
<?php

// ! 字符串常用函数

// ? 1. string <-> array
// explode: string -> array
// $str = 'mysql:dbname=phpedu;root;root';
// $arr = explode(';', $str);
// printf('<pre>%s</pre>', print_r($arr, true));

// join: array->string , js中也有一个join,功能与php中的join一样
// $colors = ['red', 'green', 'blue'];
// echo join(', ', $colors) . '<br>';
// echo implode(', ', $colors) . '<br>';

// ? 2. 查询与替换

// $str = 'php.cn';

// "php"
// substr(string $string, int $offset, ?int $length): string
// echo substr($str, 0, 3) . '<br>';
// "cn"
// echo substr($str, -2, 2) . '<br>';
// echo substr($str, -2) . '<br>';

// strstr
// $img = 'banner.png';
// ".png"
// echo strstr($img, '.') . '<br>';
// "banner"
// echo strstr($img, '.', true) . '<br>';
// $email = '498668472@qq.com';
// echo 'QQ: ' . strstr($email, '@', true) . '<hr>';

// strpos
// 0: 索引, 表示第一个字符就是,找到了
// echo strpos('php.cn', 'p') . '<br>';
// 可以指定查询起点
// echo strpos('php.cn', 'p', 1) . '<br>';
// echo strpos('php.cn', 'p', 3) ? 'OK' : '没找到' . '<hr>';

// str_replace
// 带有命名空间的完整的类名
// $class = '\admin\controllers\User';
// 类的自动加载器
// 将这个类名->类的路径上, 然后用require
// '\admin\controllers\User' => '/admin/controllers/User.php';

// windows: / \,  linux/macos: /
// $path = str_replace('\\', '/', $class) . '.php';
// DIRECTORY_SEPARATOR: 能动识别操作系统,使用适当的路径分隔符
// $path = str_replace('\\', DIRECTORY_SEPARATOR, $class) . '.php';
// echo $path . '<br>';

// 违禁词
// echo str_replace(['交友', '异性', '带货'], '**', '我用交友软件找了一个会带货的异性女友') . '<hr>';
// echo str_replace(['交友', '异性', '带货'], ['JY', 'YX', 'DH'], '我用交友软件找了一个会带货的异性女友') . '<hr>';


// ? 3. 删除指定字符

$str = 'php.cn';
echo strlen($str) . '<br>';

$str = '       php.cn  ';
echo strlen($str) . '<br>';
echo strlen(trim($str)) . '<br>';
// trim(string $string, string $characters = " \t\n\r\0\x0B"): string { }
$path = '/0421/';
echo $path, ' => ', trim($path, '/') . '<br>';
echo $path, ' => ', ltrim($path, '/') . '<br>';
echo $path, ' => ', rtrim($path, '/') . '<br>';
$tags = '<h1>Hello world</h1><?php echo "给我一百万, 否则黑了你的服务器" ?>';
echo strip_tags($tags) . '<hr>';

// ? 4. url相关
// printf('<pre>%s</pre>', print_r($_SERVER, true));
//  [QUERY_STRING] => a=1&b=2&c=3
echo $_SERVER['QUERY_STRING'] . '<br>';
$arr = explode('&', $_SERVER['QUERY_STRING']);
// printf('<pre>%s</pre>', print_r($arr, true));
// queryString -> array
parse_str($_SERVER['QUERY_STRING'], $arr);
// printf('<pre>%s</pre>', print_r($arr, true));

$userArr = ['id' => 1, 'username' => 'admin', 'role' => 'manager'];
// id=1&username=admin&role=manage
// echo http_build_query($userArr) . '<br>';

// printf('<pre>%s</pre>', print_r($_GET, true));

$url = 'http://php.edu/0421/demo4.php?a=1&b=2&c=3&id=1';

$arr = parse_url($url);
printf('<pre>%s</pre>', print_r($arr, true));

echo $_SERVER['QUERY_STRING'];

echo '<hr>';

echo parse_url($url)['query'];

echo  parse_url($url)['query'] === $_SERVER['QUERY_STRING'] ? '相等' : '不等';
Name:
<提交>