PHP 会遍历操作数组的方法

foreach() | list() | extract | array_map() | array_walk() | array_walk_recursive | array_filter() | array_rand() | array_product | array_sum | array_reduce |


foreach() 遍历数组传递键名和键值操作,键值能够做引用传递修改;
list() 遍历数组,把数组的值赋值给变量;不能引用产地,不会修改原数组,返回原数组;


foreach()

遍历数组的键名和键值操作;没有返回值;

语法结构汇总:
fearch(array $array as $val){} 操作键值;不会修改原数组;
fearch(array $array as &$val){} 引用变量 操作数组的键值,能够修改键值
fearch(array $array as $key => $val){} 操作数组的键值和键名;不会修改原数组;
fearch(array $multi_array as list($a....) ){} 操作多维数组,而且第二层次的数组必须是索引数组;
fearch(array $multi_array as $key => list($a....)){} 操作多维数组,,而且第二层次的数组必须是索引数组;

语法结构1:

foreach(array $array as $val){
$val ;
}
传递 键值 操作;不会修改原键值;

实例:

$a_name = ['bill','tom','jack']
foreach($a_name as $val){
    echo $val.' ';
}

output : bill tom jack;

语法结构2:
foreach($array as &$val){
$val
}
传递 引用传递;操作会修改原数组;

实例:

$a_age = ['bill_age'=>33,'tom_age'=>20,'jack_age'=>40];
foreach($a_name as &$val){
  $val +=10;
}
修改后 $a_age = ['bill_age'=>43,'tom_age'=>30,'jack_age'=>50];

结构语法3:
foreach($array as list($a....)){
$a
}
搭配 list() 直接操作二维数组,
实例:

$a_persional_info = array(
    'bill'=>array('bill','gates',30),
    'thomas=>array('thomas','jefferson',40)
)
foreach($a_personal_info as list($str_first_name,$str_last_name,$int_age)){
  echo $str_first_name.' . '.$str_last_name.' is '.$int_age.' years old ! <br/>';
}
output  : bill.gates is 30 years old! 
              thomas.jefferson is 40 years old! 

结构语法4:
foreach($array as $key => $val){
$key ;
$val;
}
操作键名和键值;
实例:

$a_personal_info = array('name'=>'bill','job'=>'worker','age'=>33)
foreach($a_personal_info as $key => $val){
  echo $key.'=>'.$val.'<br/>';
}
output : name  => bill
         job   => worker
         age   => 33

结构语法5:
foreach($array as $key => list($a..)){
$key;
$a;
}

实例:

$a_persional_info = array(
    'bill'=>array('bill','gates',30),
    'thomas=>array('thomas','jefferson',40)
)
foreach($a_personal_info as $key => list($str_f_name,$str_l_name,$int_age)){
  echo $key.' 的年纪是'. $int_age.' 岁!';
}
output   : bill 的年纪是30岁!
               thomas的年纪是40岁!

list()

把索引数组的键值赋值给变量;
返回原数组;

语法结构1:
list(mixed $name_1,......) = array $array;
把 索引数组 里面的键值,赋值给变量;
PHP 7 赋值的顺序从左到右;

实例:

list($name,$age,$job) = array('bill',33,'worker');
echo $name  => bill
     $age   => 33
     $job   => worker

语法结构2:
list(mixed $name_1, , mixed $name_2) = array $array;
只获取数组中指定部分,跳过不需要的部分;

实例:

list($name , ,$job) = array('bill',33,'worker');
echo $name.' is '.$job;

output : bill is worker

语法结构3:嵌套使用
list($a,$b..list($aa,$bb...)) = array $array;

实例:

$a_brand_name = array('吉利','奇瑞',array('BMW','VOLVO'));
list($str_c_brand_name_1,$str_c_brand_name_2,list($str_g_brand_name_1,$str_g_brand_name_2)) = $a_brand_name;

echo $str_g_brand_name_1 

output  : BMW

语法结构4:
list($a[0],$a[1]....) = array $array;
用数组捕获键值;

实例:


$a_brand_name = array('吉利','奇瑞',array('BMW','VOLVO'));

list($a_car_brand[0],$a_car_brand[1],list($a_car_brand[2],$a_car_brand[3])) =$a_brand_name;

print_r($a_car_brand);

output :  Array ( [0] => 吉利 [1] => 奇瑞 [2] => BMW [3] => VOLVO )


extract()

把关联数组的元素导入<a href='http://www.jianshu.com/p/46f91cd5f67a'>当前符号列表</a>中;
把键名当做变量标识符,键值赋值给变量;
如果键名当做变量标识符是一个非法的标识符,那么不会被导出;

基础语法:

int extract(array $array [,constant $flags = EXTRACT_OVERWRIT [,string $prefix]]);

-array $array 被操作的的数组;
-constant $flags 常数,决定键名的转化成变量的方式;
-EXTR_OVERWRIT 覆盖已有变量;
-EXTR_SKIP 保留已有变量;
-EXTR_PREFIX_SAME 如已有同名变量,在同名变量前增加前缀;
-EXTR_PREFIX_ALL 在所有的键名前增加前缀;
-EXTR_PREFIX_INVALID 在非法键名前增加前缀;
-EXTR_IF_EXISTS 导出具有相同变量名的键名,同时覆盖原有的;其他的不处理;
-EXTR_PREFIX_IF_EXISTS 导出具有变量的键名,同时在键名前增加前缀,成为一个新的变量;
-EXTR_REFS 导出的变量是数组键值的引用,随数组的改变而改变;同时会覆盖原有变量;
-string $prefix 添加前缀的字符串;

备注:

在增加的前缀同键名之间用 _ 下划线连接;


语法结构1:
int extract(array $array )

导出所有键名为变量名,同时覆盖原有的变量;

实例:

$name = 'old_name';
$a_bill_info = array('name'=>'bill');
extract($a_bill_info);
echo $name;

#output : bill;

语法结构2:
int extract(array $array ,EXTR_SKIP)

导出所有的键名为变量名,同已有变量名相冲突的是否,保留原有的变量;

实例:

$name = 'old_name';
$a_bill_info = array('name'=>'bill');
extract($a_bill_info,EXTR_SKIP);
echo $name;
#output : old_name;

语法结构3:

int extract(array $array ,EXTR_PREFIX_SAME, string $prefix)

导出所有的键名为变量名,如果同已有变量相冲突,在冲突的键名前增加前缀,为新的变量;

实例:

$name = 'old_name';
$a_bill_info = array('name'=>'bill');
extract($a_bill_info,EXTR_PREFIX_SAME,'bill');
echo $bill_name;
#output : bill;

语法结构4:
int extract(array $array ,EXTR_PREFIX_ALL ,string $prefix)

导出所有的键名为变量名,同时在所有的键名前增加前缀;
如果还有同名的变量名,那么覆盖原有的;

实例:

$name = 'old_name';
$a_bill_info = array('name'=>'bill','age'=>20);
extract($a_bill_info, EXTR_PREFIX_ALL,'bill');

echo $name.'<br/>'.$bill_name.'<br/>'.$bill_age;

语法结构5:

int extract(array $array ,EXTR_PREFIX_INVALID,string $prefix);

导出所有的键名为变量名,同时在非法的变量名前增加前缀;
如果有相同的变量名,那么覆盖;

实例:

$name = 'old_name';
$a_bill_info = array('name'=>'bill','1_age'=>20);
extract($a_bill_info,EXTR_PREFIX_INVALID,'bill');
echo $name. ' '.$bill_1_age;

#output : bill 20;

语法结构6:
int extract(array $array ,EXTR_IF_EXISTS)

导出已经存在相同变量名的键名,同时覆盖原有的;
没有同名变量的键名,不需要处理;

实例:

$name = 'old_name';
$a_bill_info = array('name'=>'bill','1_age'=>20);

extract($a_bill_info,EXTR_IF_EXISTS);
echo $name ;
#output : bill;

语法结构7:
int extract(array $array ,EXTR_PREFIX_IF_EXISTS ,string $prefix);

只导出已经存在相同变量名的键名,同时在键名前增加前缀,变成新的变量;
如果还是有重复的,那么覆盖原有的;

实例:

$name = 'old_name';
$a_bill_info = array('name'=>'bill','1_age'=>20);
extract($a_bill_info,EXTR_PREFIX_IF_EXISTS,'bill');

echo $bill_name.' '.$name;
#output : bill old_name;


语法结构8:
int extract(array $array ,EXTR_REFS);

导出的变量是键值的引用,会随键值的变化而变化;
覆盖同名的变量;

实例:

$name = 'old_name';
$a_bill_info = array('name'=>'bill','1_age'=>20);
extract($a_bill_info,EXTR_REFS,'bill');
echo $name;
#output : bill;
$a_bill_info['name'] = tom;
echo $name;
#output : tom;



array_map()

遍历一个或多个数组,把数组的键值传递给回调函数计算;
返回一个由函数返回值构成的数组;
当遍历一个数组的时候,返回数组的键名是原数组;当同时遍历多个数组的时候,返回数组的键名是从0开始的索引值;

基础语法:

array array_map(callback $callback ,array $array_1 [array $array_2......]);

callback $callback 回调函数,函数的第一个参数接受第一个数组传递过来的键值,函数的第二个参数接受第二个数组传递过来的键值。依次往后;
-如果传递的回调函数是NULL 的话,那么会把数组传递给函数的值直接返回,如果是多个数组传递给函数的话,那么会把多个参数组合成一个子数组返回;
-不可以传递引用参数;不能够修改原数组的键值;
-如果同时遍历的多个数组长度不同,那么用空值补充长度不够的数组;
array $array_1 需要被遍历的数组;


语法结构1:
array array_map(callback $callback ,array $array);

遍历数组的键值,传递给回调函数;
返回有回调函数的返回值构成的关联数组;
关联数组的键名 == 原数组键名;

实例:

$a_bill_info    =   array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');
function add_prefix($v){
  return 'prefix_'.$v;
}
print_r(array_map('add_prefix',$a_bill_info));

#output  : Array ( [first_name] => prefix_bill [last_name] => prefix_bill_ln [age] => prefix_22 [job] => prefix_worker )

语法结构2:

array_map(callback $callback , array $array_1, array $array_2);

同时遍历多个数组元素;
返回一个索引数组;

实例:

$a_bill_info    =   array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');
$a_tom_info =   array('first_name'=>'tom','last_name'=>'tom_ln','age'=>32,'job'=>'worker');

function connect($a,$b){
   return $a.$b;
}

print_r(array_map('connect',$a_bill_info,$a_tom_info));

#output : Array ( [0] => billtom [1] => bill_lntom_ln [2] => 2232 [3] => workerworker );

语法结构3:

array_map(NULL,array $array_1 ,array $array_2)

如果回调函数是 NULL 返回一个多维数组;

实例:

$a_bill_info    =   array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');
$a_tom_info =   array('first_name'=>'tom','last_name'=>'tom_ln','age'=>32,'job'=>'worker');
$a_jack_info    =   array('first_name'=>'jack','last_name'=>'jack_ln','age'=>27);

print_r(array_map(NULL ,$a_bill_info,$a_tom_info,$a_jack_info));

#output :
#Array (
#   [0] => Array ( [0] => bill [1] => tom [2] => jack )
#   [1] => Array ( [0] => bill_ln [1] => tom_ln [2] => jack_ln )
#   [2] => Array ( [0] => 22 [1] => 32 [2] => 27 )
#   [3] => Array ( [0] => worker [1] => worker [2] => )
# )

#备注:

#注意返回的多维数组中最后一位是空值;


array_walk()

遍历数组,修改原数组的键值;所以常常传递 键值引用 给自定义函数;
遍历一个数组,把数组的键值,键名依次传递给自定义回调函数;
如果函数有第三个参数,那么这个参数作为自定义函数的第三个参数,传递给自定义函数;
成功返回 true 失败 返回 false;

基础语法:

boolean array_walk(array $array , callback $callback [,mixed $usedate = NLL]);

boolean 返回值;
array $array 需要被遍历的数组;
callback $callback 自定义回调函数;

-自定义回调函数的第一参数是键值,第二个参数是键名,第三个参数是 $usedate 默认是NULL;由于这个函数的返回值是boolean 因此主要用来改变原数组的键值使用的,所以第一个参数常常是传递 键值引用;

mixed $usedate 传递给自定义函数的第三个参数;

备注:

array_walk() 和 foreach() 都是遍历数组,
而且都不能够返回一个具有实际操作意义的值,所以常常都使用键值的引用,都主要用于原数组的修改;
array_walk() 还有能够检查成功与否的 boolean 返回,而foreach() 什么都没有;
foreach() 不仅能够遍历数组,还能够遍历对象;

语法结构1:

boolean array_walk(array $array ,callback $callback);

实例:

$a_salary = ['bill'=>2000,'tom'=>1800,'jack'=>2750];
function increase(&$v){
  $v *=1.08;
}
array_walk($a_salary,'increase');
print_r($a_salary);
#output : Array ( [bill] => 2160 [tom] => 1944 [jack] => 2970 );

语法结构2:
boolean array_walk(array $array ,callback $callback ,mixed $usedate);

实例:

$a_salary = ['bill'=>2000,'tom'=>1800,'jack'=>2750];
$float_ratio = 1.08;

function increase(&$v,$k,$ratio){
  $v *= $ratio;
}

array_walk($a_salary,'increase',$float_ratio);

print_r($a_salary);

$output: Array ( [bill] => 2160 [tom] => 1944 [jack] => 2970 );
#备注:
#函数 increase 必须是三个形参;不能缺少 $k,即使我们不需要;

array_walk_recursive()

递归遍历数组,把数组的键值传递给自定义函数,
除了递归遍历外,其他方面同 array_walk 相同;

基础语法:

boolean array_walk_recursive(array $array , callback $callback [,mixed $usedate = NULL]);

boolean 返回值,成功返回 true 失败返回 false;
array $array 需要被遍历的函数;
callback $callback 自定义回调函数,
-自定义函数的第一个参数是数组的键值,因为array_walk_recursive 没有实际意义的返回值,所以一般传递键值的引用,改变原数组;
-自定义函数的第二个参数是,键名;
-自定义函数的额第三个参数是 ,mixed $usedate 的值;
mixed $usedate 传递给自定义函数的第三个值;

语法结构1:
boolean array_walk_recursive(array $array , callback $callback);

function callback(&$v,$k){
$v,$k;
}

不带多余参数的遍历数组;

实例:


$a_personal_info = array(
                            'bill' => array(
                                            'first_name'    => 'bill_fn',
                                            'last_name'     => 'bill_ln',
                                            'age'          => 55,
                                            'other'     => array('a','b','c')
                                          ),
                            'tom'  => array(
                                            'first_name'    => 'tom_fn',
                                            'last_name'  => 'tom_ln',
                                            'age'          =>   30,
                                            'other'      => array('a','b','c')
                                          ),
                            'jack' => array(
                                            'first_name'    => 'jack_fn',
                                            'last_name'  => 'jack_ln',
                                            'age'          => 20,
                                            'other'      => array('a','b','c')
                                          )

                            );

function change_age(&$v,$k){
  if($k == 'age'){
    $v += 10;
  }
}

if(array_walk_recursive ($a_personal_info, 'change_age')){
  print_r($a_personal_info);
}

#output :
#Array (
#[bill] => Array ( [first_name] => bill_fn [last_name] => bill_ln [age] => 65 [other] => Array ( [0] => 10 [1] => b [2] => c ) )
#[tom] => Array ( [first_name] => tom_fn [last_name] => tom_ln [age] => 40 [other] => Array ( [0] => 10 [1] => b [2] => c ) )
#[jack] => Array ( [last_name] => jack_ln [age] => 30 [other] => Array ( [0] => 10 [1] => b [2] => c ) ) )


语法结构2:
boolean array_walk_recursive(array $array , callback $callback , mixed $usedate);

function callback(&$v,$k,$date){
$v,$k,$date;
}

带额外参数的遍历数组;

实例:


$a_personal_info = array(
                            'bill' => array(
                                            'first_name'    => 'bill_fn',
                                            'last_name'     => 'bill_ln',
                                            'age'          => 55,
                                            'other'     => array('a','b','c')
                                          ),
                            'tom'  => array(
                                            'first_name'    => 'tom_fn',
                                            'last_name'  => 'tom_ln',
                                            'age'          =>   30,
                                            'other'      => array('a','b','c')
                                          ),
                            'jack' => array(
                                            'first_name'    => 'jack_fn',
                                            'last_name'  => 'jack_ln',
                                            'age'          => 20,
                                            'other'      => array('a','b','c')
                                          )

                            );

function change_age(&$v,$k,$date){
  if($k == 'age'){
    $v += $date;
  }
}

if(array_walk_recursive($a_personal_info,'change_age',1)){
  print_r($a_personal_info);
}

#output:
#Array (
#[bill] => Array ( [first_name] => bill_fn [last_name] => bill_ln [age] => 56 [other] => Array ( [0] => 10 [1] => b [2] => c ) )
#[tom] => Array ( [first_name] => tom_fn [last_name] => tom_ln [age] => 31[other] => Array ( [0] => 10 [1] => b [2] => c ) )
#[jack] => Array ( [last_name] => jack_ln [age] => 21 [other] => Array ( [0] => 10 [1] => b [2] => c ) ) )


array_filter()

用自定义函数过滤数组;
返回一个有自定义函数返回true 的数组元素构成的数组;
不会改变原有数组元素;

基础语法:
array array_filter(array $array ,callback $callback [constant $flags = NULL]);

array 返回的数组;
array $array 被过滤的原始数组;
callback $callback 自定义函数;
constant $flags 决定传递给自定义函数的参数;
ARRAY_FILTER_USE_KEY 传递键名;
ARRAY_FILTER_USE_BOTH 传递键值和键名,第一个参数是键值,第二个参数是键名;
忽略没有这个参数,传递键值;

语法结构1:

array array_filter(array $array ,callback $callback);
function callback ($v){
$v;
}

实例:

$a_int = range(1,10);
function get_even($v){
  if($v%2 == 0){
    return true;
  }
}

print_r(array_filter($a_int,'get_even'));
#output : Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 [9] => 10 );

语法结构2:
array array_filter(array $array ,callback $callback ,ARRAY_FILTER_USE_KEY);
function callback($k){
$k;
}

实例:

$a_personal_info = array(
                            '王军' => array(
                                            'first_name'    => '军',
                                            'last_name'     => '王',
                                            'age'          => 55,
                                          ),
                            '王丹'  => array(
                                            'first_name'    => '丹',
                                            'last_name'  => '王',
                                            'age'          =>   30,
                                          ),
                            '李明' => array(
                                            'first_name'    => '明',
                                            'last_name'  => '李',
                                            'age'          => 20,
                                          )

                            );

function get_people_wangs($k){
  if(mb_substr($k,0,1,'utf-8') == '王'){
    return true;
  }
}

print_r(array_filter($a_personal_info,'get_people_wangs',ARRAY_FILTER_USE_KEY));

#output:
#Array ( 
#[王军] => Array ( [first_name] => 军 [last_name] => 王 [age] => 55 ) 
#[王丹] => Array ( [first_name] => 丹 [last_name] => 王 [age] => 30 )
# )

语法结构3:

array array_filter(array $array ,callback $callback ,ARRAY_FILTER_USE_BOTH);

实例:

$a_personal_info = array(
                            '王军' => array(
                                            'first_name'    => '军',
                                            'last_name'     => '王',
                                            'age'          => 55,
                                          ),
                            '王军'  => array(
                                            'first_name'    => '军',
                                            'last_name'  => '王',
                                            'age'          =>   30,
                                          ),
                            '李明' => array(
                                            'first_name'    => '明',
                                            'last_name'  => '李',
                                            'age'          => 20,
                                          )

                            );
function get_people($v,$k){
  if(mb_substr($k,0,1,'UTF-8') == '王' && $v['age'] == 30){
    return true;
  }
}

print_r(array_filter($a_personal_info,'get_people',ARRAY_FILTER_USE_BOTH));
#output : Array ( [王军] => Array ( [first_name] => 军 [last_name] => 王 [age] => 30 ) );


array_rand()

随机返回键名;

基础语法:
mixed array_rand(array $array [int $number = 1]);

mixed 返回一个键名字符串或 多个键名组成的数组;

array $array 被操作的数组;
int $number 指定返回的键名的个数;

备注:
如果 int $number >= 数组的长度,那么返回整个键名构成的索引数组,而且排列的顺序同原数组;
php 获取数组键名的函数

语法结构1:
string array_rand(array $array)

随机返回数组键名字符串;

实例:

$a_bill_info    =   array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');

echo array_rand($a_bill_info);
#output : 数组中任意一个随机键名;

语法结构2:
array array_rand(array $array , int $number);

返回一个由随机键名组成的数组;
如果 int $number >= 数组的长度,返回整个数组的键名,同时顺序同原数组;

实例:

$a_bill_info    =   array('first_name'=>'bill','last_name'=>'bill_ln','age'=>22,'job'=>'worker');

print_r(array_rand($a_bill_info,2));
print_r(array_rand($a_bill_info,count($a_bill_info)));

#output:
#Array ( [0] => first_name [1] => job )
#Array ( [0] => first_name [1] => last_name [2] => age [3] => job )


array_reduce()

遍历数组,迭代的把数组简化成一个值返回;

基础语法:
mixed array_reduce(array $array ,callback $callback [, mixed $initial = NULL]);

mixed 返回值;
array $array 被用来计算的数组;

callback $callback 自定义函数;
-mixed callback(mixed $carry ,mixed $item)
-carry 上次迭代的结果,如果是第一次迭代 则是 initial ;
-item 这次迭代的值;

mixed $initial 传递给第一次迭代的自定义函数的第一个参数,或当迭代的数组为空的时候,作为返回值;
-注意初始值默认是 NULL;

语法结构1:
mixed array_reduce(array $array ,callback $callback );

初始值是NULL 的迭代;

实例:

$a_int = range(1,10);

function sum($carry,$item){
  return $carry += $item;
}
echo (array_reduce($a_int,'sum'));

#output : 55;

语法结构2:
mixed array_reduce(array $array ,callback $callback, mixed $initial);

有额外参数的迭代计算;

实例:

$a_int = range(1,10);
$a_empty = array();

function product($carry,$item){
  return $carray *= $item;
}

print_r(array_reduce($a_int,'product',1));
print_r(array_reduce($a_int,'product',1));

#output :
# 3628800;
# 1;

备注:

array_reduce() 的第三个参数默认是NULL 在数字计算的时候会转化成0;


array_product()

计算数组中所有键值的乘积;返回这个乘积;
专门用于数字运算;
被操作数组为空的时候,返回1;

基础语法:
number array_product(array $array);

number 返回 整数 or 浮点数;
array $array 被遍历的数组;

实例:

echo array_product(range(1,10));

#output: 3628800

备注:

被操作数组为空的时候,返回1;
array_sum() 被操作数组为空的时候,返回0;


array_sum()

返回数组中所有键值的总和;
主要用作数字;
被操作数组为空的时候,返回0;

基础语法:

number array_sum(array $array);

number 返回整数 or 浮点数;
array $array 被操作的数组;

实例:

echo array_sum(range(1,10));

#output: 55;

备注:

被操作数组为空的时候返回0;
array_product() 数组为空的时候返回1;


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • 数组的概述 PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方...
    dptms阅读 1,514评论 0 4
  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,316评论 0 20
  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 1,965评论 1 24
  • array() | [ ] | array_fill() | array_fill_keys() | co...
    彭晓华阅读 400评论 0 0
  • 我站在十八层的阳台上 凭栏四顾各方 所见都是钢筋水泥的楼房 满布着蜂窝似的密窗 那句智慧的哲语 在城市失去了哲理的...
    叶知秋yzq阅读 156评论 0 2