Blogger Information
Blog 38
fans 0
comment 0
visits 23350
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
常用数组函数(二)---2018-8-27
晓明的博客
Original
888 people have browsed it

一.数组的遍历

    

实例

<?php
/**
 * 1数组分类
 * 2.数组定义
 * 3.数组遍历
 */

//1. 数组分为二类:索引数组,关联数组
$arts = ['亢龙有悔','飞龙在天','见龙在田','鸿渐于陆','潜龙勿用','突如其来']; // 索引数组
//索引从0开始计数
//echo $arts[0],'<br>'; // 键名是数字索引
//echo $arts[1],'<br>';
//echo $arts[5],'<br>';
//关联数组
$swordsman = ['name'=>'郭靖','position'=>'金刀驸马','skill'=>'降龙十八掌'];
//echo $swordsman['name'],'<br>'; // 键名是字符串
//echo $swordsman['skill'],'<br>'; // 键名是字符串

//2.数组定义
// 1. 整体创建
//$a = '见龙在田';
//$b = ['鸿渐于陆','潜龙勿用','突如其来'];
//$arts = ['亢龙有悔','飞龙在天',$a,$b]; // 索引数组
//echo '<pre>', print_r($arts,true);

//2.逐个来创建
$swordsman = []; //声明一个空数组
$swordsman['name'] = '杨康';  //通过追加的方式添加到新数组中
$swordsman['position'] = '金国小王爷';
$swordsman['skill'] = '九阴白骨爪';
//echo '<pre>', print_r($swordsman,true);
//echo '<hr>';

//3. 数组的遍历
//for ()
$res1 = '';
for ($i=0; $i<count($arts); $i++) {
     $res1 .= $arts[$i].'---';
}
//echo rtrim($res1,'---'),'<hr>';

//while()

$res2 = '';
$i=0;
while ( $i<count($arts)) {
    $res2 .= $arts[$i].'---';
    $i++;
}
//echo rtrim($res2,'---'),'<hr>';
// do~while()
// foreach()
// $value 叫循环变量,每一次数组将要输出的当前的元素赋值给$value
//foreach ($swordsman as $key=>$value) {
//    echo '['.$key,'] => ',$value,'<br>';
//}
echo '<hr>';

// list()和each()
//while(list($key, $value) = each($swordsman)) {
//    echo '['.$key,'] => ',$value,'<br>';
//}
$arts = ['亢龙有悔','飞龙在天','见龙在田','鸿渐于陆','潜龙勿用','突如其来']; // 索引数组
//数组的内部指针
reset($arts);  // 将指针复位,指向第一个元素
//获取当前元素的键名和值
echo key($arts),'-----',current($arts),'<br>';
//下移指针
next($arts);
//获取当前元素的键名和值
echo key($arts),'-----',current($arts),'<br>';
//最后一个
end($arts);
//获取当前元素的键名和值
echo key($arts),'-----',current($arts),'<br>';
reset($arts);  // 将指针复位,指向第一个元素
//获取当前元素的键名和值
echo key($arts),'-----',current($arts),'<br>';

运行实例 »

点击 "运行实例" 按钮查看在线实例


二:1. print_r($arr, $bool) 2. var_dump($var1,$var2....)
    3. var_export($arr,true),输出的就是字符串表示: 就是创建这个数组的php语句

echo()
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。

print()
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。

print_r() 这里的 print_r(array,true)直接返回一个数组的字符串
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。

打印关于变量的易于理解的信息,如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。 记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。


var_dump()

此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

var_dump和print_r的区别:

var_dump返回表达式的类型与值而print_r仅返回结果,相比调试代码使用var_dump更便于阅读。

  

实例

eg:二维数组的输出:

$arr=array(

           array('a'=>'aa','b'=>'bbb','c'=>'ccc'),
           array('a'=>'ddd','b'=>'eee','c'=>'fff'),
           array('a'=>'gg','b'=>'hh'));


print_r($arr);
//print_r输出:
 //Array ( [0] => Array ( [a] => aa [b] => bbb [c] => ccc ) 
                   [1] => Array ( [a] => ddd [b] => eee [c] => fff ) 
                   [2] => Array ( [a] => gg [b] => hh ) ) 

var_dump($arr);
//var_dump输出:
/* array (size=3)
  0 => 
  array (size=3)
   'a' => string 'aa' (length=2)
   'b' => string 'bbb' (length=3)
   'c' => string 'ccc' (length=3)
  1 => 
  array (size=3)
           'a' => string 'ddd' (length=3)
   'b' => string 'eee' (length=3)
   'c' => string 'fff' (length=3)
  2 => 
  array (size=2)
   'a' => string 'gg' (length=2)
   'b' => string 'hh' (length=2)
*/



下面在给出一个json格式的输出:


$arr=array(array('a'=>'aa','b'=>'bbb','c'=>'ccc'), 
           array('a'=>'ddd','b'=>'eee','c'=>'fff'),
           array('a'=>'gg','b'=>'hh'));
$arra=json_encode($arr);
print_r($arra);
//print_r输出:
 [{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]

var_dump($arra);
//var_dump输出:
 string '[{"a":"aa","b":"bbb","c":"ccc"},{"a":"ddd","b":"eee","c":"fff"},{"a":"gg","b":"hh"}]' (length=84)

运行实例 »

点击 "运行实例" 按钮查看在线实例


三.数组的常用操作函数


   

实例

<?php
$arr1 = ['id'=>1, 'name'=>'杨过','sex'=>'male','salary'=>8000];

/**
 * 1. print_r($arr, $bool)
 * 2. var_dump($var1,$var2....)
 * 3. var_export($arr,true),输出的就是字符串表示: 就是创建这个数组的php语句
 */
// $res = print_r($arr1,true);
//echo '<pre>',$res,'<br>';
//var_dump($arr1);
//var_export($arr1);

// //1. array_values() 返回所有的值的数组
// echo '<pre>',print_r(array_values($arr1),true);
// echo '<pre>', var_export(array_values($arr1),true);

// //2. array_keys() 返回所有键的数组
// echo '<pre>', var_export(array_keys($arr1),true),'<br>';

// //3. in_array()  判断是否在数组中
// echo in_array('male1', $arr1) ? '存在' : '<span style="color:red">不存在</span><br>';

// //4. array_key_exists()   判断键值是否存在
// echo array_key_exists('name2', $arr1) ? '存在' : '<span style="color:red">不存在</span><br>';

// //5. array_flip()  键值相互调换
// echo '<pre>', var_export(array_flip($arr1),true);

// //6. array_reverse()  数据值相反
echo '<pre>', var_export(array_reverse($arr1),true);

运行实例 »

点击 "运行实例" 按钮查看在线实例

补充 print_r和var_dump 和var_export的区别

    

 

1、print_r  打印关于变量易于理解的信息。

       php手册中这么介绍print_r()函数,print_r()显示一个变量易于理解的信息。如果给出是string、integer或float,将打印变量值本身。如果给出的是array,将会按照一定格式显示键和元素。object与数组类似。print_r()函数打印数组会把数组的指针移到最后边。使用reset()函数可以将指针会到开始处。

       mixed print_r(mixed $var [,bool $return])从函数原型可以了解到此函数可以接受第二个参数,如果第二个参数为true,将不会输出数据,而是返回其输出。

 

2、var_export  输出或返回一个变量字符串表示。

       mixedvar_export( mixed $var [,bool $return]),此函数返回关于传递给该函数的变量的结构信息,它和var_dump()类似,不同的是其返回表示合法的php代码。可以通过设置第二个参数设置为true,从而返回变量表示。其返回字符串可以通过eval()函数重新解析成php变量。

 

3、var_dump 打印变量相关信息

       voidvar_dump(mixed $var [, mixed $var]);此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值,数组将递归展开,通过缩进显示其结构。该函数在断点输出调试中经常使用,此函数打印出变量类型非常方便与调试时使用。

实例

//print_r()函数打印出变量易于理解的信息
$array = array(
	array('1','2','3','4','5','6','7','8','9','10'),
	'string',
	'float',
	array('a','b','c','d','e','f','g','h')
);
$float = 12.00;
$string = '这是一个字符串';
 
//print_r($array);
//以上输出
// Array
// (
// 		[0] => Array
// 		(
// 				[0] => 1
// 				[1] => 2
// 				[2] => 3
// 				[3] => 4
// 				[4] => 5
// 				[5] => 6
// 				[6] => 7
// 				[7] => 8
// 				[8] => 9
// 				[9] => 10
// 		)
 
// 		[1] => string
// 		[2] => float
// 		[3] => Array
// 		(
// 				[0] => a
// 				[1] => b
// 				[2] => c
// 				[3] => d
// 				[4] => e
// 				[5] => f
// 				[6] => g
// 				[7] => h
// 		)
 
// )
 
$newArray = print_r($array,true);//这个不会输出,而是把输出的内容返回给变量$newArray
 
//var_dump()打印出变量相关的信息
var_dump($float,$string,$array);
//以上会输出
// float(12)
// string(21) "这是一个字符串"
// array(4) {
// 	[0]=>
// 	array(10) {
// 		[0]=>
// 		string(1) "1"
// 		[1]=>
// 		string(1) "2"
// 		[2]=>
// 		string(1) "3"
// 		[3]=>
// 		string(1) "4"
// 		[4]=>
// 		string(1) "5"
// 		[5]=>
// 		string(1) "6"
// 		[6]=>
// 		string(1) "7"
// 		[7]=>
// 		string(1) "8"
// 		[8]=>
// 		string(1) "9"
// 		[9]=>
// 		string(2) "10"
// 	}
// 	[1]=>
// 	string(6) "string"
// 		[2]=>
// 		string(5) "float"
// 		[3]=>
// 		array(8) {
// 		[0]=>
// 		string(1) "a"
// 		[1]=>
// 		string(1) "b"
// 		[2]=>
// 		string(1) "c"
// 		[3]=>
// 		string(1) "d"
// 		[4]=>
// 		string(1) "e"
// 		[5]=>
// 		string(1) "f"
// 		[6]=>
// 		string(1) "g"
// 		[7]=>
// 		string(1) "h"
// 	}
// }
 
var_dump($float,$string);
//以上输出
// float(12)
// string(21) "这是一个字符串"
 
 
//var_export()函数输出或返回一个变量字符串表示
var_export($array);
//以上输出
// array (
// 		0 =>
// 		array (
// 				0 => '1',
// 				1 => '2',
// 				2 => '3',
// 				3 => '4',
// 				4 => '5',
// 				5 => '6',
// 				6 => '7',
// 				7 => '8',
// 				8 => '9',
// 				9 => '10',
// 		),
// 		1 => 'string',
// 		2 => 'float',
// 		3 =>
// 		array (
// 				0 => 'a',
// 				1 => 'b',
// 				2 => 'c',
// 				3 => 'd',
// 				4 => 'e',
// 				5 => 'f',
// 				6 => 'g',
// 				7 => 'h',
// 		),
// )
$newArray = var_export($array,true);//该函数会把其输出返回给$newArray变量
 
//$newArray字符串可以使用eval()函数使其变成php可用的变量值。
eval('$exec_Array='.$newArray.';');
var_dump($exec_Array);

运行实例 »

点击 "运行实例" 按钮查看在线实例



四. 数组与变量与字符串之间的转换

    1.list() 把数组中的元素转为变量: 用在索引数组上

     

实例

list($name, $course, $grade) = ['小龙女','php',80];
//$name = '小龙女';
//$course = 'php';
//$grade = 80;
echo $name, '的 "', $course, '"课程的成功是: ', $grade, '<hr>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

   小龙女的 "php"课程的成功是: 80


  2. extract($arr, $flag): 关联数组转为变量

实例

$arr1 = ['id'=>1, 'name'=>'杨过','sex'=>'male','salary'=>8000];
//extract():返回变量的数量
echo '共生成了:',var_export(extract($arr1),true),'个变量:<br>';
//$id=1; $name='杨过'; $sex='male'; $salary=8000;
echo '我的id:',$id,',姓名:',$name,',性别:',$sex,',工资: ',$salary,'元<hr>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

      共生成了:4个变量:
     我的id:1,姓名:杨过,性别:male,工资: 8000元


3.compact(): 将变量转为关联数组

  

实例

$name = '陈近南';
$faction = '天地会';
$position = '总舵主';
$arr = compact('name','faction','position');
echo var_export($arr,true),'<hr>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

      array ( 'name' => '陈近南', 'faction' => '天地会', 'position' => '总舵主', )


 4.explode():将字符串转换数组

  

实例

$lang = 'html,css,javascript,jquery,php,mysql';
echo var_export(explode(',',$lang)),'<br>';
echo var_export(explode(',',$lang,3)),'<br>';
echo var_export(explode(',',$lang,-2)),'<br>';//最常用

运行实例 »

点击 "运行实例" 按钮查看在线实例

array ( 0 => 'html', 1 => 'css', 2 => 'javascript', 3 => 'jquery', 4 => 'php', 5 => 'mysql', )
array ( 0 => 'html', 1 => 'css', 2 => 'javascript,jquery,php,mysql', )
array ( 0 => 'html', 1 => 'css', 2 => 'javascript', 3 => 'jquery', )

5.数组的切割 和分块

   1.切割

实例

// array_slice():从数组中指定位置,返回指定数量的元素
$arr = [10,20,30,40,50,60];
//$arr = range(10,60,10);
echo '<pre>';
//print_r($arr);
// 0表示从第一个元素开始输出
echo var_export(array_splice($arr,0),true),'<br>';
   // 输出结果
  //  array (
  // 0 => 10,
  // 1 => 20,
  // 2 => 30,
  // 3 => 40,
  // 4 => 50,
  // 5 => 60,
  //  )
 //从2开始
echo var_export(array_splice($arr, 2,3),true),'<br>';
//  输出结果
//  array (
//   0 => 30,
//   1 => 40,
//   2 => 50,
// )

运行实例 »

点击 "运行实例" 按钮查看在线实例


实例

$arr = [10,20,30,40,50,60];
//$arr = range(10,60,10);
// -2从尾巴开始删除的元素的数量
echo var_export(array_splice($arr, 3,-2),true),'<br>';
//输出结果
// array ( 0 => 40, )

运行实例 »

点击 "运行实例" 按钮查看在线实例

   


  2.分块 array_chunk(): 将大数组分割为小数组

   

实例

$arr = [10,20,30,40,50,60];
//$arr = range(10,60,10);
echo var_export(array_chunk($arr,3),true),'<br>';
//输出结果
// array ( 0 => array ( 0 => 10, 1 => 20, 2 => 30, ), 1 => array ( 3 => 40, 4 => 50, 5 => 60, ), )

运行实例 »

点击 "运行实例" 按钮查看在线实例

3.array_pad(),将数组用指定的数组填充到指定的长度

   

实例

$arr = [50,60,70];
echo var_export(array_pad($arr, 6, 99),true),'<br>';
echo var_export(array_pad($arr, -5, 'php'),true),'<br>';
//输出结果
// array ( 0 => 50, 1 => 60, 2 => 70, 3 => 99, 4 => 99, 5 => 99, )
// array ( 0 => 'php', 1 => 'php', 2 => 50, 3 => 60, 4 => 70, )

运行实例 »

点击 "运行实例" 按钮查看在线实例

五.数组函数的回调

. array_filter($arr, $callback)

 

实例

//1. array_filter():回调处理数组中的每个元素的值,仅返回结果为true的元素
$arr1 = [5,0,'',20,null,88,false,'php'];
echo '<pre>';
echo '原始数组',var_export($arr1,true),',共有:',count($arr1),'个元素<hr>';
// ''空字符串,0,null,false: false
$arr2 = array_filter($arr1);
echo '新数组',var_export($arr2,true),',共有:',count($arr2),'个元素<hr>';

原始数组array (
  0 => 5,
  1 => 0,
  2 => '',
  3 => 20,
  4 => NULL,
  5 => 88,
  6 => false,
  7 => 'php',
),共有:8个元素
新数组array (
  0 => 5,
  3 => 20,
  5 => 88,
  7 => 'php',
),共有:4个元素

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

$arr3 = ['html','css','javascript'];
$arr4 =array_filter($arr3, function ($value){
    return $value !== 'css';
});
echo var_export($arr4),'<hr>';

//输出结果
array ( 0 => 'html', 2 => 'javascript', )

运行实例 »

点击 "运行实例" 按钮查看在线实例

 

 . array_walk($arr, $callback())

 

实例

$arr = ['name'=>'admin','email'=>'admin@php.cn'];
echo var_export($arr, true), '<hr>';
//格式化
array_walk($arr, function (&$value, $key) {
    echo $key,':',$value,'<br>';
});
echo '<hr>';
//输出结果
array ( 'name' => 'admin', 'email' => 'admin@php.cn', )
name:admin
email:admin@php.cn

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

$arr = ['name'=>'admin','email'=>'admin@php.cn'];

array_walk($arr, function (&$value, $key, $name) {
    //如果当前的用户名是:admin,则授权查看,否则拒绝
    if ($value != $name) {
        exit('无权查看');
    } else {
        exit($key.':'.$value);
    }

},'admin1');


//输出 结果
   无权查看

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

$arr = ['name'=>'admin','email'=>'admin@php.cn'];

array_walk($arr, function (&$value, $key, $name) {
    //如果当前的用户名是:admin,则授权查看,否则拒绝
    if ($value != $name) {
        exit('无权查看');
    } else {
        exit($key.':'.$value);
    }

},'admin');

//输出结果
name:admin

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

echo '<pre>';
echo var_export(array_unique([1,2,2,3,3,4,4,5,6]));

echo var_export(array_fill(2,10,3));

//输出结果
array (
  0 => 1,
  1 => 2,
  3 => 3,
  5 => 4,
  7 => 5,
  8 => 6,
)
array (
  2 => 3,
  3 => 3,
  4 => 3,
  5 => 3,
  6 => 3,
  7 => 3,
  8 => 3,
  9 => 3,
  10 => 3,
  11 => 3,
)

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

echo var_export(array_rand(range(1,33),7));
echo "<hr>";
echo var_export(array_rand(range(1,16),3));
echo "<hr>";
//输出结果
array ( 0 => 2, 1 => 8, 2 => 9, 3 => 13, 4 => 14, 5 => 23, 6 => 24, )
array ( 0 => 3, 1 => 9, 2 => 10, )

运行实例 »

点击 "运行实例" 按钮查看在线实例

  

实例

$arr = ['东邪','西毒','南帝','北丐'];
shuffle($arr);  // 验证码
echo var_export($arr);

//输出乱序
array ( 0 => '北丐', 1 => '南帝', 2 => '西毒', 3 => '东邪', )

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

//array_merge():合并多个数组,相同键名互相覆盖
$db_sys = ['host'=>'127.0.0.1','user'=>'root','pass'=>'root'];
$db_user = ['host'=>'localhost', 'pass'=>sha1('123456')];

$res=array_merge($db_sys, $db_user);
echo var_export($res);


//输出结果

array ( 'host' => 'localhost', 'user' => 'root', 'pass' => '7c4a8d09ca3762af61e59520943dc26494f8941b', )

运行实例 »

点击 "运行实例" 按钮查看在线实例


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post