0x02 - PHP 中的对象类型

2017-09-04  本文已影响32人  游城十代2dai

PHP 中的数组字符串貌似并不是对象类型, 需要使用关键字 object 转化才能成为对象, 这点和 OC 有很大的区别

0x01- 字符串

字符串有四种使用的方式:

单引号

  $str = ''; //  这种创建的字符串不可以引用其他变量
eg:
  $str1 = '12';
  $str2 = '$str1';
 这时候使用 echo 的话, 打印的结果为:  $str1

双引号

  $str = ""; //  这种创建的方式可以引用其他变量
eg:
  $str1 = '12';
  $str2 = "{$str1}";
 此时打印的结果为: 12
* 这种引用的方式要加 {} , 因为习惯😂

heredoc 语法

// 其实就是双引号的方式
$heredoc = <<<"LIST"
<ul>
  <li>你好</li>
  <li>Hello World</li>
  <li>no 不</li>
</ul>
LIST;
echo $heredoc;

nowdoc 语法

// 和单引号一样的
$nowDoc = <<<'List'
<ul>
  <li>你好</li>
  <li>Hello World</li>
  <li>no 不</li>
</ul>
List;

0x02 - 数组

数组被分为了索引数组和关联数组, 经过学习, 发现就是 OC 中的字典, 并且不会出现越界的现象, 而且现在大多使用的是字面量的方式创建

0x01 索引数组

$arr1 = [1, 2, 34, 45];
$arr2 = ['s', 'sd', 'aa', '是'];
$arr3 = [0 => 'ss', 1 => 'ss', 2 => 'ss', 3 => 'ss',];

这三个数组都是可以理解为角标从 0 --> 3 的数组,

$arr3 = [0 => 'ss', 3 => 'ss', 4 => 'ss', 9 => 'ss',];

这个数组就和我们的字典很像了, 是存在 key => value 的

ps: 数组中的 key 若是有相同的, 后面的则会覆盖前面的值, 数组常用 print_r($arr) 来输出数组

0x02 - 关联数组

$arr = ['id' => 'peter', 'name' => 'jim', 'ii' => '11'];

关联数组, 完全是靠 key 去寻找 value, 也等价于我们的 NSDictionary

0x03 - 增删改查

$arr = ['id' => 'peter', 'name' => 'jim', 'ii' => '11'];
$arr[] = 'gender'; //  在最后面插入 key = 0 , value = 'gender' 的元素
$arr[8] = 'gender'; //  在最后面插入一个 key = 8 , value = 'gender'  的元素
$arr['gender'] = 1; //  在最后面插入一个 key = gender , value = 1  的元素
unset($arr['id']); // 删除数组中的一个
 
// 删除数组中所有的值
foreach ($arr as $key => $value) {
  unset($arr[$key]); 
}
$arr['ii'] = 'gender'; //  修改 key = ii 的 vlaue 为 gender

0x03 - 对象

class Person
{
  public $name = 'Peter';
  public $age = 29;
  public $gender = '男';

  public function description()
  {
    return '我是'.$this->name;
  }
}

$obj = new Person;

echo "$obj->name";
echo $obj->description();

一定要注意箭头是使用, 还有 public 权限

$objc = new stdClass();
$objc->name = '你好';
$objc->action = function ()
{
  return 'action start';
};

echo $objc->name;
echo call_user_func($objc->action);

通用的创建对象, 此时的 aciton 是属性, 也是方法, 和我们OC 的 block 很像, 估计以后的 this 会出现指向问题

上一篇下一篇

猜你喜欢

热点阅读