Blogger Information
Blog 22
fans 0
comment 2
visits 10419
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
常用数组函数(2)---2018年-8-26日
Jerry-wang的博客
Original
579 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语句 

实例

二维数组的输出:

$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);

运行实例 »

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

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

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

实例

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

运行实例 »

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

 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>';

运行实例 »

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

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

实例

$name = '南';
$faction = '会';
$position = '主';
$arr = compact('name','faction','position');
echo var_export($arr,true),'<hr>';

运行实例 »

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

 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>';//最常用

运行实例 »

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

 5.数组的切割 和分块

实例

// 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', )

运行实例 »

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

实例

$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:Uncorrected

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