底层C语言中怎么表示PHP字符串?
struct{
char *val;l
int len;
}str;
1)字节组成的数组可以用[]访问某个字符
2)字符串长度可以达到2G(内存)
3)常见函数都是单字节处理方式
4)PHP字符串是二进制安全的 二进制安全大佬详解
简单说明: 在C语言中,字符串的结尾的标志是 '\0' 而在PHP中会计算字符串长度,不是以'\0'结尾
5)用超出字符串长度的下标写入将会拉长该字符串并以空格填充
常用字符串函数:
字符串"串行化",大部分php值可以转变成string来永久保存
1)serialize()函数:序列化对象或数组,存储或传递 PHP 的值,同时不丢失其类型和结构。 返回:string
2)unserialize()函数:反序列化对象或数组 返回:混合类型
实例
<?php
class User{
public $name = '';
public $age = 0;
public function PrintData(){
echo 'User '.$this->name.'is '.$this->age.' years old';
}
}
$user = new User();
$user->name = 'John';
$user->age = 20;
$exp = serialize($user);
// O:4:"User":2:{s:4:"name";s:4:"John";s:3:"age";i:20;}
echo $exp.PHP_EOL;
$user1 = unserialize($exp);
print_r($user1);
//User Object
//(
// [name] => John
// [age] => 20
//)
3)json_encode() 函数: 将数组转换为字符串 返回:string
4)json_decode() 函数: 将字符串转换为数组或对象 返回:混合
<?php
$a = [
'a' => 'apple',
'b' => 'sun',
'c' => 'moon'
];
$s = json_encode($a);
echo $s.PHP_EOL;
print_r(json_decode($s, true));
// {"a":"apple","b":"sun","c":"moon"}
// Array
// (
// [a] => apple
// [b] => sun
// [c] => moon
// )
5)var_export() 函数:输出或返回一个变量的字符串 返回:合法PHP代码
<?php
$a = array(1, 2, array("jil", "gsji", "gmsm"));
$k = var_export($a, true);
echo $k;