博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP中array
阅读量:7053 次
发布时间:2019-06-28

本文共 20868 字,大约阅读时间需要 69 分钟。

有两个数组

 

 

$a =
array('aaa','bbb','ddd','aaa');
$b =
array('aaa','ddd','aaa','bbb');
如何比较这两个数组是否相等,前提是不能使用sort()之类的内置函数进行排序。
如果一定要使用内置函数,哪一个排序函数速度最快???

 

 

 

++++++++++++++++++++++++++++++++++++++++++++++

 

 

$a =
array('aaa','bbb','ddd','aaa');
$b =
array('aaa','ddd','aaa','bbb');
$c =
array_diff(
$a,
$b);
print_r(
$c);
//
输出array()

 

$a =
array('aaa1','bbb','ddd','aaa');
$b =
array('aaa','ddd','aaa','bbb');
$c =
array_diff(
$a,
$b);
print_r(
$c);
//
输出array('aaa1')

 

 

 

++++++++++++++++++++++++++++++++++++++++++++++

 

 

至于两个数组相同,不清楚怎么说的,是键值相同,还是键值与键名都相同? 如果单纯地
比较键值,用1楼的就行了。。   

 

 

 

++++++++++++++++++++++++++++++++++++++++++++++

 

 

array_diff 可行,如果返回的是空数组即说明,2个数组相同!   

array->xml

<?php function array2xml($array, $tag) {

    function ia2xml($array) {         $xml="";         foreach ($array as $key=>$value) {             if (is_array($value)) {                 $xml.="<$key>".ia2xml($value)."</$key>";             } else {                 $xml.="<$key>".$value."</$key>";             }         }         return $xml;     }
    return simplexml_load_string("<$tag>".ia2xml($array)."</$tag>"); }
$test['type']='lunch'; $test['time']='12:30'; $test['menu']=array('entree'=>'salad', 'maincourse'=>'steak');
echo array2xml($test,"meal")->asXML(); ?>

xml->array

method1:

function xml2phpArray($xml,$arr){         $iter = 0;         foreach($xml->children() as $b){             $a = $b->getName();             if(!$b->children()){                 $arr[$a] = trim($b[0]);             }else{                 $arr[$a][$iter] = array();                 $arr[$a][$iter] = xml2phpArray($b,$arr[$a][$iter]);                 $iter++;             }         }         return $arr;     }

$xml = <<<XML <?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> <a><c>ccc</c><e>eee</e></a> </note> XML;

print_r(xml2phpArray(simplexml_load_string ( $xml ),array()));

method2:

function XML2Array ( $xml , $recursive = false ) {     if ( ! $recursive )     {         $array = simplexml_load_string ( $xml ) ;     }     else     {         $array = $xml ;     }         $newArray = array () ;     $array = ( array ) $array ;     foreach ( $array as $key => $value )     {         $value = ( array ) $value ;         if ( isset ( $value [ 0 ] ) )         {             $newArray [ $key ] = trim ( $value [ 0 ] ) ;         }         else         {             $newArray [ $key ] = XML2Array ( $value , true ) ;         }     }     return $newArray ; }

 

1 数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool类型。 2 函数名中出现单a表示association,含义为,在按值排序的过程中,保持key=>value的对应关系不变 3 函数名中出现单k表示key,含义为,在按值排序的过程中按照数组key而不是数组的值排序 4 函数名中出现单r的表示reverse,含义为,按照跟不加r的相反的顺序排列 5 函数名中出现单u的表示user-defined,含义为,使用用户自定义函数排序,如果函数的逻辑是参数1<参数2返回负数,则按照升序排列(p1小2返负升)。

boolsort ( array &$array [, int $sort_flags= SORT_REGULAR ] )

<?php
$fruits
=
array
(
"lemon"
,
"orange"
,
"banana"
,
"apple"
);
sort(
$fruits
);
var_dump(
$fruits
);
?>

结果:array(4) { [0]=> string(5) "apple" [1]=> string(6) "banana" [2]=> string(5) "lemon" [3]=> string(6) "orange" }

--------------------rsort降序排列-------------------- 

 结果:array(4) { [0]=> string(6) "orange" [1]=> string(5) "lemon" [2]=> string(6) "banana" [3]=> string(5) "apple" }

---------------asort按照二维数组值的升序排列(保持key=>value的关联关系)----------- 
"lemon", "a" => "orange", "b" => "banana", "c" => "apple"); asort($fruits); var_dump($fruits); ?> 结果:array(4) { ["c"]=> string(5) "apple" ["b"]=> string(6) "banana" ["d"]=> string(5) "lemon" ["a"]=> string(6) "orange" }
--------------arsort按照二维数组值的降序排列(保持key=>value的关联关系)-------------- 
"lemon", "a" => "orange", "b" => "banana", "c" => "apple"); arsort($fruits); var_dump($fruits); ?> 结果:array(4) { ["a"]=> string(6) "orange" ["d"]=> string(5) "lemon" ["b"]=> string(6) "banana" ["c"]=> string(5) "apple" }
-----------------ksort按照数组的key升序排列-------------- 
"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple"); ksort($fruits); var_dump($fruits); ?> 结果:array(4) { ["a"]=> string(6) "orange" ["b"]=> string(6) "banana" ["c"]=> string(5) "apple" ["d"]=> string(5) "lemon" }
---------------------krsort按照数组key的降序排列-------------------------------- 
"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple"); krsort($fruits); var_dump($fruits); ?> 结果:array(4) { ["d"]=> string(5) "lemon" ["c"]=> string(5) "apple" ["b"]=> string(6) "banana" ["a"]=> string(6) "orange" }
----------------usort函数按照用户自定义的函数排序---------------- 
结果:array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(5) [4]=> int(6) }
-----------------uksort使用自定义函数按照数组的key排序----------------- 
1, "the Earth" => 2, "an apple" => 3, "a banana" => 4); uksort($a, "cmp"); var_dump($a); ?> 结果:array(4) { ["an apple"]=> int(3) ["a banana"]=> int(4) ["the Earth"]=> int(2) ["John"]=> int(1) }
-------------------uasort将数组用自定义函数按照value排序,保持索引关系不变--------- 
4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4); var_dump($array); uasort($array, 'cmp'); var_dump($array); ?> 结果:array(8) { ["d"]=> int(-9) ["h"]=> int(-4) ["c"]=> int(-1) ["e"]=> int(2) ["g"]=> int(3) ["a"]=> int(4) ["f"]=> int(5) ["b"]=> int(8) }
-------------------array_multisort排序多个数组或多维数组--------- 
结果:array(2) { [0]=> array(5) { [0]=> string(2) "10" [1]=> int(100) [2]=> int(100) [3]=> int(11) [4]=> string(1) "a" } [1]=> array(5) { [0]=> int(1) [1]=> int(3) [2]=> string(1) "2" [3]=> int(2) [4]=> int(1) } }
//说明: 1 上例中:$ar数组优先按照$ar[0]的字符串值升序排列,如果字符串值相等,再按照$ar[1]数组的数字值降序排列。 2 array_multisort函数的任意一个位置的参数如果是数组,表示排序时用的值, 如果有多个数组参数,优先按照前边的数组值进行排序,如果是常量,例如 SORT_ASC, SORT_DESC, SORT_REGULAR,SORT_NUMERIC, SORT_STRING. 表示排序方法(数组取值前优先)。

PHP二维数组排序函数 PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是PHP二维数组的排序需要自定义。 以下函数是对一个给定的二维数组按照指定的键值进行排序,先看函数定义:

function
array_sort(
$arr
,
$keys
,
$type
=
'asc'
){
   
$keysvalue
=
$new_array
=
array
();
   
foreach
(
$arr
as
$k
=>
$v
){
       
$keysvalue
[
$k
] =
$v
[
$keys
];
   
}
   
if
(
$type
==
'asc'
){
       
asort(
$keysvalue
);
   
}
else
{
       
arsort(
$keysvalue
);
   
}
   
reset(
$keysvalue
);
   
foreach
(
$keysvalue
as
$k
=>
$v
){
       
$new_array
[
$k
] =
$arr
[
$k
];
   
}
   
return
$new_array
;
}  

$array = array( array('name'=>'手机','brand'=>'诺基亚','price'=>1050), array('name'=>'笔记本电脑','brand'=>'lenovo','price'=>4300), array('name'=>'剃须刀','brand'=>'飞利浦','price'=>3100), array('name'=>'跑步机','brand'=>'三和松石','price'=>4900), array('name'=>'手表','brand'=>'卡西欧','price'=>960), array('name'=>'液晶电视','brand'=>'索尼','price'=>6299), array('name'=>'激光打印机','brand'=>'惠普','price'=>1200) ); $ShoppingList = array_sort($array,'price'); print_r($ShoppingList);

 

 

 

 

$xml = <<<XML <?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> <a><b><c>ccc</c></b><e>eee</e></a> </note> XML;

print_r(XML2Array($xml));

json->array

json_decode($json,true);//第二个参数为true时 即为array

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json)); var_dump(json_decode($json, true));

array->json

json_encode 数组-》json

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);

 

 

 

 

,1.array_filter(array input,callback callback)

作用:通过过滤函数过滤数组元素

返回值:array

注意:callback函数要带有参数,数组input的每个元素将会通过callback函数进行过滤。

2.array_intersect(array arr1,array arr2[,array arrn])

作用:以arr1为准,计算数组交集。

返回值:array。该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。

注意:键名保留不变。

3.array_merge(array $array1 [, array $array2 [, array $... ]])

作用:将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

返回值:array

4.array_pop ( array &$array )

作用:弹出array的最后一个元素,并将长度减1,如果 array 为空(或者不是数组)将返回 NULL

返回值:被弹出的值。。

5.array_push(array &$array , mixed $var [, mixed $... ])

作用:将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。

返回值:array

6.array_rand(array $input [, int $num_req ])

作用:在你想从数组中取出一个或多个随机的单元时相当有用。它接受 input 作为输入数组和一个可选的参数 num_req ,指明了你想取出多少个单元 - 如果没有指定,默认为 1。

如果你只取出一个,array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。

7. array_shift(array &$array)

作用:将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。如果 array 为空(或者不是数组),则返回 NULL

8.array_sum(array $array)

作用:将数组中的所有值的和以整数或浮点数的结果返回。

9.in_array(mixed $needle , array $haystack [, bool $strict ])

作用:检查数组中是否存在某个值。在 haystack 中搜索 needle ,如果找到则返回 TRUE,否则返回 FALSE

10.range(mixed $low , mixed $high [, number $step ])

作用:返回数组中从 lowhigh 的单元,包括它们本身。如果 low > high,则序列将从 high 到 low。如果给出了 step 的值,它将被作为单元之间的步进值。step 应该为正值。如果未指定,step 则默认为 1。

11.shuffle(array &$array)

作用:本函数打乱(随机排列单元的顺序)一个数组。

12.unique(array $array)

作用:删除数组中重复的值。并返回没有重复的新数组。

 

 

<?php

/* 本地缓存文件名称 */
$tempfile = "sms.php";
$smsdata = array();
$getTime = 3 ;
/**
* 文件是否需要读取远程
*
* @return boolean 获取远程数据文件
*/
function getFileReader() {
   
   
/* 引入全局变量 */
    global $tempfile,$smsdata,$getTime;   
   
   
try {
       
       
if( time() - filemtime($tempfile) < $getTime ) {
           
/* 本地 */
            $smsdata = include $tempfile;
           
        }
else {
           
/* 远程 */
            if( getHttpFileGyArray() === false ) $smsdata = include $tempfile;
        }
       
       
    }
catch (FtpException $e) {
       
/* 远程 */
        if( getHttpFileGyArray() === false ) $smsdata = array();   
    }
}
/**
* 获取HTTP请求远程数据文件
*
* @param string $url 地址
*
* @return boolean/array 获取远程数据文件
*/
function getHttpFileGyArray( $url ) {
   
   
/* 引入全局变量 */
    global $tempfile,$smsdata;
   
   
try {
       
/* 读取数据 */
        $text = @file_get_contents($url);
       
$text = explode('@',$text);
       
       
/* 生成PHP数组内容 */
        foreach( $text as $key => $row ) {
           
$at = explode('|',$row);       
           
$smsdata[$at[0]]['dx'] = $at[1];
        }
       
       
/* 缓存到本地 */
        $content  = "<?php\n\n return ".var_export($smsdatatrue).";\n";   
       
file_put_contents($tempfile, $content);
       
    }
catch (FtpException $e) {
       
$smsdata = array();
       
return false;
    }
   
return true;
}
getFileReader();
print_r($smsdata);
 
?>

 

 

php函数有很多,需要时查询api。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
/*
 
#数组 没有限制大小:$arr[0]=1;$arr[1]=2; $arr=array("0","1");$list($num1,$num2)=$arr;
  
array range(int low,int high[,int step])
        
low最小数,high最高数,step步长
  
int array_unshift(array array,mixed vari) 数组前面插入
  
array_push 数组尾添加
  
array_shift  数组头部删除
  
array_pop    数组尾部删除
 
#定位数组
  
boolean in_array(mixed needle,array haystack,[,boolean strict])
  
boolean array_key_exists(mixed key,array array) 搜索关键键
  
array_search() 搜索关联数组值
  
array_keys()返回数组,包含所搜索的的所有键
  
array_values()返回数组所有值。
 
#遍历数组
  
mixed key(array array)
  
current(array array) 获取当前数组值
  
array each(array array) 返回当前键、值对
  
next(array array) 指向下一个
  
prev(array array) 移到前一个
  
reset(array array)移到第一个
  
end(array array)移到最后一个
 
#向函数传递数组值
  
boolean array_walk(array &array,callback function,[,mixed userdata])
 
#确定数组的大小及唯一性
  
integer count(array array[,int mode]) 类似sizeof()
  
array array_count_values(array array) 分组统计每个值出现的次数
  
array_unique() 删除重复值,保持唯一性
 
#排序
  
array_reverse()顺序逆置
  
array_flip()   对换键与值
  
void sort(array array[,int sort_flags])
       
sort_flgs{[SORT_NUMBERIC数值排序],[SORT_REGULAR 按ASCII排序],[SORT_STRING]}
  
asort()升序
  
rsort()逆序
  
arsort()逆序
  
natsort()自然排序
  
natcasesort()不区分大小写自然排序
  
ksort()键值排序
  
krsort()逆序键值排序
  
void usort(array array,callback function name) 用户自定义排序
#合并,拆分,结合,分解数组
  
array_merge_recursive() 合并
  
array_merge_combine() 追加
  
array_merge()连接到新数组
  
array_slice(array array,int offse[,int length]) 拆分
  
array_intersect()、array_intersect_assoc()数组交集
  
array_diff()、array_diff_assoc()差集
  
array_rand()、shuffle()随机数组
  
array_sum()求和
  
array_chunk 分成多维数组
*/
//创建0-20的偶数数组,2为步长
$even
=range(0,20,2);
//打印数组
print_r(
$even
);
//判断是否为数组
printf(
"this number is an array:%s<br/>"
,(
is_array
(
$even
)?
"true"
:
"false"
));
echo
"<br>"
;
//数组头部添加子项,并打印
array_unshift
(
$even
,522,54);
print_r(
$even
);
//定义一变量,然后在数组中搜索,存在时显示找到该变量。
$sa
=522;
 
if
(in_array(
$sa
,
$even
)){
      
echo
"find it $sa"
;
};
echo
"<br/>"
;
//搜索数组关键键
if
(
array_key_exists
(4,
$even
)){
      
echo
$even
[4].
" exists."
;
}
echo
"<br/>"
;
print_r(
array_values
(
$even
));
//遍历打印数组
while
(
$key
=key(
$even
)){
     
echo
"<br/>"
.
$key
;
     
next(
$even
);
}
//统计数组大小
echo
"<br/>"
;
echo
count
(
$even
);
//排序
echo
"<br>"
;
sort(
$even
);
print_r(
$even
);
?>

 

 

这篇文章将介绍10个操作PHP关联数组的技巧,熟练运用能帮助你提高开发效率。

1、添加数组元素

PHP是一种弱类型语言,这意味着你不需要显示声明一个数组及其大小,相反,你可以同时声明并填充数组。

  1. $capitals = array
  2.   'Alabama' => 'Montgomery', 
  3.   'Alaska'  => 'Juneau', 
  4.   'Arizona' => 'Phoenix' 
  5. );

额外的数组元素可以象下面这样追加:

  1. $capitals['Arkansas'] = 'Little Rock';

如果你正在处理数字索引数组,你可能想使用显示命名的函数前置和追加元素,如array_push()和array_unshift()函数,但这些函数不能操作关联数组。

2、删除数组元素

如果要从数组中删除一个元素,请使用unset()函数,如:

  1. unset($capitals['California']);

使用数字索引数组时,删除数组元素的办法更多,更灵活,可以使用array_shift()和array_pop()函数分别从数组的开头和末尾删除一个元素。

3、交换键和值

假设你想创建一个名叫$states的新数组,使用州府作为索引,使用州名作为关联值,使用array_flip()函数很容易完成这个任务。

  1. $capitals = array
  2.   'Alabama' => 'Montgomery', 
  3.   'Alaska'  => 'Juneau', 
  4.   'Arizona' => 'Phoenix' 
  5. ); 
  6. $states = array_flip($capitals); 
  7. // $states = array
  8. //  'Montgomery' => string 'Alabama', 
  9. //  'Juneau'     => string 'Alaska', 
  10. //  'Phoenix'    => string 'Arizona' 
  11. // );

4、合并数组

假设前面的数组由一个基于Web的“FlashCard”服务使用,你想提供一种方法测试学生对美国各州首府的掌握情况,你可以使用array_merge()函数合并包含州和首府的数组。

  1. $stateCapitals = array
  2.   'Alabama' => 'Montgomery', 
  3.   'Alaska'  => 'Juneau', 
  4.   'Arizona' => 'Phoenix' 
  5. ); 
  6. $countryCapitals = array
  7.   'Australia' => 'Canberra', 
  8.   'Austria'   => 'Vienna', 
  9.   'Algeria'   => 'Algiers' 
  10. ); 
  11. $capitals = array_merge($stateCapitals, $countryCapitals);

5、编辑数组值

假设在数组中的数据包含大小写错误,在插入到数据库之前,你想纠正这些错误,你可以使用array_map()函数给每个数组元素应用一个回调。

  1. function capitalize($element) 
  2.   $element = strtolower($element); 
  3.   return ucwords($element); 
  4. $capitals = array
  5.   'Alabama' => 'montGoMEry', 
  6.   'Alaska'  => 'Juneau', 
  7.   'Arizona' => 'phoeniX' 
  8. ); 
  9. $capitals = array_map("capitalize", $capitals);

6、按键对数组排序

FlashCard程序常常使用各种排序,如按字母顺序排序,你可以使用ksort()函数按键对关联数组进行排序。

  1. $capitals = array
  2.   'Arizona' => 'Phoenix', 
  3.   'Alaska'  => 'Juneau', 
  4.   'Alabama' => 'Montgomery' 
  5. ); 
  6. ksort($capitals);

因为数组是通过参数传递给ksort()函数的,意味着你不再需要将排序结果分配给另一个变量。

7、随机数组排序

在FlashCard程序中还涉及到另一种随机排序技术,这时你要使用shuffle()函数实现数组项目的随机排序。

  1. $capitals = array
  2.   'Arizona' => 'Phoenix', 
  3.   'Alaska'  => 'Juneau', 
  4.   'Alabama' => 'Montgomery' 
  5. ); 
  6. shuffle($capitals);

如果不需要打乱数组顺序,你只是想随机选择一个值,那么使用array_rand()函数即可。

8、确定键和值是否存在

你可以使用in_array()函数确定一个数组元素是否存在。

  1. $capitals = array
  2.   'Arizona' => 'Phoenix', 
  3.   'Alaska'  => 'Juneau', 
  4.   'Alabama' => 'Montgomery' 
  5. ); 
  6. if (in_array("Juneau", $capitals)) 
  7.   echo "Exists!"; 
  8. } else { 
  9.   echo "Does not exist!"; 
  10. }

很少有人知道这个函数也可以确定一个数组键是否存在,在这一点上,它和array_key_exists()函数的功能一样。

  1. $capitals = array
  2.   'Arizona' => 'Phoenix', 
  3.   'Alaska'  => 'Juneau', 
  4.   'Alabama' => 'Montgomery' 
  5. ); 
  6. if (array_key_exists("Alaska", $capitals)) 
  7.   echo "Key exists!"; 
  8. } else { 
  9.   echo "Key does not exist!"; 
  10. }

9、搜索数组

你可能想搜索数组资源,这样用户就可以方便地用一个特定的州府检索关联的州,可以通过array_search()函数实现数组搜索。

  1. $capitals = array
  2.   'Arizona' => 'Phoenix', 
  3.   'Alaska'  => 'Juneau', 
  4.   'Alabama' => 'Montgomery' 
  5. ); 
  6. $state = array_search('Juneau', $capitals); 
  7. // $state = 'Alaska'

10、标准PHP库

标准PHP库(Standard PHP Library,SPL)为开发人员提供了许多数据结构,迭代器,接口,异常和其它以前PHP语言没有的功能,使用这些功能可以通过面向对象的语法遍历数组。

  1. $capitals = array
  2.   'Arizona' => 'Phoenix', 
  3.   'Alaska'  => 'Juneau', 
  4.   'Alabama' => 'Montgomery' 
  5. ); 
  6. $arrayObject = new ArrayObject($capitals); 
  7. foreach ($arrayObject as $state => $capital) 
  8.   printf("The capital of %s is %s<br/>", $state, $capital); 
  9. // The capital of Arizona is Phoenix 
  10. // The capital of Alaska is Juneau 
  11. // The capital of Alabama is Montgomery

这仅仅是SPL众多伟大功能中的一个,一定要阅读PHP文档了解更多信息。

 

方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// 去除数组中指定的元素
$arr
=
array
(
   
array
(
'id'
=> 1,
'name'
=>
'lili'
),
   
array
(
'id'
=> 2,
'name'
=>
'abo'
),
   
array
(
'id'
=> 3,
'name'
=>
'wewe'
),
);
 
function
filt(
$var
) {
   
if
(
$var
[
'name'
] !=
'abo'
) {
       
// callback 函数返回true,则 input数组的当前值会被包含在返回的结果数组中。
       
// 数组的键名保留不变
       
return
true;
   
}
   
}
$arr1
=
array_filter
(
$arr
,
'filt'
);
print_r(
$arr
);
print_r(
$arr1
);

方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$arr
=
array
(
   
array
(
'id'
=> 1,
'name'
=>
'lili'
),
   
array
(
'id'
=> 2,
'name'
=>
'abo'
),
   
array
(
'id'
=> 3,
'name'
=>
'wewe'
),
);
 
print_r(
$arr
);
foreach
(
$arr
as
$key
=>
$value
) {
   
if
(
$value
[
'name'
] ==
'abo'
) {
       
unset(
$arr
[
$key
]);
   
}
}
print_r(
$arr
);

 

 

 

定义数组

  数组array是一组有序的变量,其中每个变量被叫做一个元素。

一、定义数组   可以用 array() 语言结构来新建一个数组。它接受一定数量用逗号分隔的 key => value 参数对。 array( [key =>] value , ... ) // key 可以是 数字 或者 字符串 // value 可以是任何值 例子1:

 

<?
php
$phpjc
=
array
(
0
=>
'
word
'
,
3
=>
'
excel
'
,
'
outlook
'
,
'
access
'
);
print_r
(
$phpjc
);
?>

输出结果如下 :

Array
( [
0
]
=>
word [
3
]
=>
excel [
4
]
=>
outlook [
5
]
=>
access )

 

  例子1定义了一个数组,名字叫phpjc,第一个元素的值是:word,(说明:数组是从0开始计数的),第二个元素为空,第三个元素是:excel,后面自动生成第四和第五个元素   可以通过给变量赋予一个没有参数的array()来创建空数组,然后可以通过使用方括号[]语法来添加值。(注:另外也可用array_push()函数向数组中添加值!!!) 例子2:

 

<?
php
$phpjc
=
array
();
$phpjc
[]
=
"
one
"
;
$phpjc
[]
=
"
two
"
;
echo
$phpjc
[
0
]
.
"
<br>
"
;
echo
$phpjc
[
1
];
?>

 

输出结果如下 :

one two

 

二、读取数组元素   使用字符串索引(或键)来访问储在数组中的值   例子3:

<?
php
$phpjc
=
array
(
"
first
"
=>
1
,
"
second
"
=>
2
,
"
third
"
=>
3
);
echo
$phpjc
[
"
second
"
];
$phpjc
[
"
third
"
]
=
5
;
//
把第三个元素的值由“3”修改为“5”
echo
$phpjc
[
"
third
"
];
?>

 

 

  PHP中有很多数组相关的函数,一一用实例说明了is_array()、n_array()、count()、array_push()、array_unshift()、array_merge()、array_pop()、array_shift()、sort()

1.is_array()函数

  是否为数组 ----------------------------------------------------------- 2.in_array()函数   如果你有很大的一个数组,而所要完成的仅是找出一个存在的给定值,你可以使用in_array()以返回true 或 false。如下代码将输出“Not found in this array”——因为你将在$namesArray中寻找一个并不存在的“Alber ”。

代码
<?
php
  $namesArray
=
array
(
"
Joe
"
,
"
Jane
"
,
"
Bob
"
,
"
Mary
"
,
"
Paul
"
,
"
Eddie
"
,
"
John
"
);
  $lookingFor
=
"
Albert
"
;
  if
(
in_array
(
$lookingFor
,
$namesArray
)) {
    echo
"
You've found it!
"
;   }
else
{
    echo
"
Not found in this array!
"
;   }
?>

 

 

-----------------------------------------------------------

3.count()函数   如果你改变了$lookingFor的值,将其变为“Mary”,你将得到消息“You've found it!”——因为“Mary”是$namesArray的一部分。 如果希望对数组元素计数,你可以使用count()函数:

<?
php  
$namesArray
=
array
(
"
Joe
"
,
"
Jane
"
,
"
Bob
"
,
"
Mary
"
,
"
Paul
"
,
"
Eddie
"
,
"
John
"
);  
$count
=
count
(
$namesArray
);
?>

$count值将为7。 -----------------------------------------------------------

4.array_push()函数   你可以对任何数组添加元素,无论是在已存在数组的开始或末尾。你也可以使用函数以创建一个包含两个或多个数组元素的新数组。合并时每个数组将按需要的顺序排列。如果你的数组已经有内部的排序,你需要对新的合并数组重排序。让我们从对已存在数组的末尾增添元素开始,使用函数array_push():

代码
<?
php   
/*
创建原始数组
*/
  $fruitArray
=
array
(
"
apple
"
,
"
orange
"
,
"
banana
"
,
"
kiwi
"
,
"
pear
"
);
  /*
加入到原始数组中
*/
  array_push
(
$fruitArray
,
"
grape
"
,
"
pineapple
"
,
"
tomato
"
);
  /*
通过其键值列出每个元素
*/
  while
(
list
(
$key
,
$value
)
=
each
(
$fruitArray
)) {
    echo
"
$key
:
$value
<br>
"
;   }
?>

 

 

这将显示:

0
:
apple
1
:
orange
2
:
banana
3
:
kiwi
4
:
pear
5
:
grape
6
:
pineapple
7
:
tomato

 

 

----------------------------------------------------------- 5.array_unshift()函数 当你需要对数组开头添加元素时,代码非常类似。不同处只是函数名:array_unshift() 而不是array_push()。

代码
<?
php   
/*
创建原始数组
*/
  $fruitArray
=
array
(
"
apple
"
,
"
orange
"
,
"
banana
"
,
"
kiwi
"
,
"
pear
"
);
  /*
加入到原始数组中
*/
  array_unshift
(
$fruitArray
,
"
grape
"
,
"
pineapple
"
,
"
tomato
"
);
  /*
通过其键值列出每个元素
*/
  while
(
list
(
$key
,
$value
)
=
each
(
$fruitArray
)) {
    echo
"
$key
:
$value
<br>
"
;   }
?>

 

 

这将显示:

0
:
grape
1
:
pineapple
2
:
tomato
3
:
apple
4
:
orange
5
:
banana
6
:
kiwi
7
:
pear

 

 

----------------------------------------------------------- 6.array_merge()函数 函数array_merge()合并两个或更多的数组。

代码
<?
php   
/*
创建原始数组
*/
  $fruitArray
=
array
(
"
apple
"
,
"
orange
"
,
"
banana
"
,
"
kiwi
"
,
"
pear
"
);
  
/*
创建第二个数组
*/
  $vegArray
=
array
(
"
carrot
"
,
"
green beans
"
,
"
asparagus
"
,
"
artichoke
"
,
"
corn
"
);
  /*
合并为一个数组
*/
  $goodfoodArray
=
array_merge
(
$fruitArray
,
$vegArray
);
  /*
通过其键值列出每个元素
*/
  while
(
list
(
$key
,
$value
)
=
each
(
$goodfoodArray
)) {
    echo
"
$key
:
$value
<br>
"
;   }
?>

 

 

这将显示:

0
:
apple
1
:
orange
2
:
banana
3
:
kiwi
4
:
pear
5
:
carrot
6
:
green beans
7
:
asparagus
8
:
artichoke
9
:
corn

 

现在已经对数组进行了增加元素和合并,现在来练习删除元素函数。你可以使用函数array_pop()从一数组末尾删除一个元素。如果使用函数 array_shift(),则从一数组开头删除一个元素。而实际上当你从数组删除元素时,此元素对你而言仍然可用——当你从已存在的数组中对元素进行 pop 或 shift时。

-----------------------------------------------------------

7.array_pop()函数 使用array_pop()函数从数组末尾删除一个值:

代码
<?
php
  /*
创建一数组
*/
  $fruitArray
=
array
(
"
apple
"
,
"
orange
"
,
"
banana
"
,
"
kiwi
"
,
"
pear
"
);
  /*
在末尾弹出某值
*/
  $popped
=
array_pop
(
$fruitArray
);
  /*
列出新数组内容,以及弹出的值
*/
  while
(
list
(
$key
,
$value
)
=
each
(
$fruitArray
)) {
    echo
"
$key
:
$value
<br>
"
;   }
  echo
"
<br>and finally, in
$popped
:
$popped
"
;
?>

 

 

这将显示:

0
:
apple
1
:
orange
2
:
banana
3
:
kiwi and finally
,
in
$popped
:
pear

 

----------------------------------------------------------- 8.array_shift()函数 下面,从数组末尾删除某值:

代码
<?
php
  /*
创建一数组
*/
  $fruitArray
=
array
(
"
apple
"
,
"
orange
"
,
"
banana
"
,
"
kiwi
"
,
"
pear
"
);
  /*
从数组头部移出某值
*/
  $shifted
=
array_shift
(
$fruitArray
);
  /*
列出新数组的内容以及移出的值
*/
  while
(
list
(
$key
,
$value
)
=
each
(
$fruitArray
)) {
    echo
"
$key
:
$value
<br>
"
;   }
  echo
"
<br>and finally, in
$shifted
:
$shifted
"
;
?>

 

 

这将显示:

0
:
orange
1
:
banana
2
:
kiwi
3
:
pear and finally
,
in
$shifted
:
apple

 

 

----------------------------------------------------------- 9.sort()函数 有很多函数可以帮助你对数组元素排序。但我将会演示基本的排序以帮助你了解其过程:

代码
<?
php
  
/*
创建原始数组
*/
  $fruitArray
=
array
(
"
apple
"
,
"
orange
"
,
"
banana
"
,
"
kiwi
"
,
"
pear
"
);
  /*
排序
*/
  sort
(
$fruitArray
);
  /*
对其重设以正确从头到尾显示数组
*/
  /*
通过其键值列出每个元素
*/
  while
(
list
(
$key
,
$value
)
=
each
(
$fruitArray
)) {
    echo
"
$key
:
$value
<br>
"
;   }
?>

 

 

这将显示:

0
:
apple
1
:
banana
2
:
kiwi
3
:
orange
4
:
pear
 
 
 

转载于:https://www.cnblogs.com/fx2008/archive/2013/03/27/2984069.html

你可能感兴趣的文章
Centos Git1.7.1升级到Git2.2.1
查看>>
算法题总结----数组(二分查找)
查看>>
OPENWRT make menuconfig错误之一
查看>>
可集成到APP的车架号识别软件
查看>>
导出查询结果到csv文件
查看>>
Algs4-2.3.19五取样切分
查看>>
IDEA常用快揵键
查看>>
git 学习笔记
查看>>
[HDU5968]异或密码
查看>>
Vue的安装
查看>>
iOS开发~CocoaPods使用详细说明
查看>>
C#扩展方法
查看>>
移动浏览器中实现拨打电话,调用sms,发送email
查看>>
docker 搭建小型的node开发环境。
查看>>
Java第九次作业
查看>>
.Net Discovery系“.NET技术”列之-深入理解平台机制与性能影响 (中)
查看>>
1.文件重命名工具
查看>>
【java】json格式解析
查看>>
Linux开始结束ping命令
查看>>
开源一款私藏Management Studio插件,ProjkyAddin,送给所有使用SQLServer的园友们
查看>>