PHP中array

php如何比较两个数组是否相等???

有两个数组

 

 

$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 http://www.cnblogs.com/andybegin/archive/2012/03/30/2425864.html

<?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 ; }

PHP数组排序函数合集

 

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降序排列-------------------- <?php $fruits = array("lemon", "orange", "banana", "apple"); rsort($fruits); var_dump($fruits); ?>

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

---------------asort按照二维数组值的升序排列(保持key=>value的关联关系)----------- <?php $fruits = array("d" => "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的关联关系)-------------- <?php $fruits = array("d" => "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升序排列-------------- <?php $fruits = array("d"=>"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的降序排列-------------------------------- <?php $fruits = array("d"=>"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函数按照用户自定义的函数排序---------------- <?php function cmp($a, $b) { if ($a == $b) { return 0;} return ($a < $b) ? -1 : 1; } $a = array(3, 2, 5, 6, 1); usort($a, "cmp"); var_dump($a); ?> 结果:array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(5) [4]=> int(6) }
-----------------uksort使用自定义函数按照数组的key排序----------------- <?php function cmp($a, $b) {     $a = preg_replace('@^(a|an|the) @', '', $a);     $b = preg_replace('@^(a|an|the) @', '', $b);     return strcasecmp($a, $b); } $a = array("John" => 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排序,保持索引关系不变--------- <?php function cmp($a, $b) {     if ($a == $b) { return 0;}     return ($a < $b) ? -1 : 1; } $array = array('a' => 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排序多个数组或多维数组--------- <?php $ar = array(        array("10",11,100,100,"a"),        array(1,2,"2",3,1)       );    array_multisort($ar[0], SORT_ASC, SORT_STRING,$ar[1], SORT_NUMERIC, SORT_DESC); var_dump($ar); ?> 结果: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);

 

 

 

PHP常用函数之数组篇

 

,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文档了解更多信息。

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
 
 
 
posted @ 2013-03-27 10:22  火腿骑士  阅读(285)  评论(0编辑  收藏  举报