php开发笔记(三)字符串(string)类型中单双引号使用的注意事项

本文详细介绍了PHP中单引号与双引号的区别,包括字符串解析规则、转义字符支持情况及执行效率对比,并通过示例代码展示了具体用法。

(一)单双引号之间的区别

1.单引号不可以解析字符串,而双引号可以解析字符串

2.单引号只能解析\',\\这两种转义符,而双引号可以解析所有的转义符

3.同时由于单引号解析效果低,所以其执行效率高,一般情况下,除了为了避免解析错误的情况,一般建议使用单引号

常见的转义符有:1) \'=>' 单引号 2)\\=>\ 反斜杠 3)\"=>" 双引号 4)\$=>$美元符 5)\n 换行符  6)\r 回车 7)\t 水平制表符 8)\v 垂直制表符 9)\f 走纸符

<?php
    /*
     * 字符串string类型中存在的常见问题汇总
     * 单引号不可以解析字符串,而双引号可以解析字符串
     * 同时由于单引号解析效果低,所以其执行效率高,一般情况下,除了为了避免解析错误的情况,一般建议使用单引号
     */
    $name="hailin";
    echo '$name','<br/>';
    echo "$name",'<br/>';
    
    //单引号只能解析\',\\这两种转义符,而双引号可以解析所有的转义符
    $description1='From nwpu,\n\'software\' \\programming';
    $description2="From nwpu,\nsoftware programming";
    
    $st='51zxw';
    if(strpos($st,5)!==false){
     echo '5在字符串"$st"中','<br/>';
     }else{
     echo '5在字符串"$st"中','<br/>';
     }
  
    if(strpos($st,5)!==false){
        //由于$st在双引号之中,所以可以被解析
        echo "5在字符串'$st'中",'<br/>';
    }else{
        echo "5在字符串'$st'中",'<br/>';
        }
    
    echo $description1,'<br/>';
    echo $description2,'<br/>';
在浏览器中的运行结果如下,请仔细分析:



### C语言中单引号双引号区别 在C语言中,单引号(`'`)和双引号(`"`)分别用于表示字符和字符串。以下是它们的具体区别: 1. **单引号 `'`** 单引号用于定义一个字符类型(`char`)。字符字面量被编译为对应的ASCII码值[^1]。例如: ```c char a = 'A'; ``` 在上述代码中,变量 `a` 是一个 `char` 类型的变量,存储的是字符 `'A'` 的ASCII码值。 2. **双引号 `"`** 双引号用于定义字符串字面量。字符串字面量实际上是一个以空字符 `\0` 结尾的字符数组,其内容被编译为内存中的地址[^2]。例如: ```c char str[] = "Hello"; ``` 在这里,`str` 是一个字符数组,包含了字符 `'H'`, `'e'`, `'l'`, `'l'`, `'o'` 和终止符 `'\0'`。 3. **错误示例分析** 如果尝试用单引号定义字符串或多字符,会导致编译警告或错误。例如: ```c char a = "A"; // 错误:将字符串字面量赋值给字符变量 ``` 上述代码会引发警告,因为 `"A"` 是一个字符串字面量,而不是个字符。正确的写法是使用双引号定义字符串或字符数组[^1]: ```c char a[] = "A"; // 正确:定义一个包含字符串 "A" 的字符数组 ``` 4. **运行时行为** 如果程序试图访问未正确初始化的字符串或字符变量,可能会导致段错误(Segmentation Fault)。例如: ```c char a = "A"; // 错误:将字符串字面量赋值给字符变量 printf("%c", a); // 运行时可能出错 ``` 原因在于,`"A"` 被编译为一个内存地址,而该地址的内容可能无法通过字符变量正确访问。 5. **总结** - 单引号用于定义个字符(`char` 类型),其值为对应的ASCII码。 - 双引号用于定义字符串字面量,实际上是字符数组,以空字符 `\0` 结尾。 - 字符串字面量不能直接赋值给字符变量,需要使用字符数组或其他适当的数据结构。 ### 示例代码 以下是一个完整的代码示例,展示单引号双引号的正确使用方式: ```c #include <stdio.h> int main() { char c = 'A'; // 使用单引号定义字符 char str[] = "A"; // 使用双引号定义字符串 printf("Character: %c\n", c); // 输出字符 A printf("String: %s\n", str); // 输出字符串 A return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值