天天看点

[完]PHP Array 创建、索引、添加、删除、判断是否存在指定元素

PHP中的数组实际上是一个有序映射。映射是一种把values关联到keys的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。数组元素的值也可以是另一个数组。树形结构和多维数组也是允许的。

创建Array

// 创建一个简单的数组
$array = array(, , , , );
print_r($array);

// 现在删除其中的所有元素,但保持数组本身不变:
foreach ($array as $i => $value) {
    unset($array[$i]);
}
print_r($array);

// 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
$array[] = ;
print_r($array);

// 重新索引:
$array = array_values($array);
$array[] = ;
print_r($array);
           

结果:

Array
(
    [] => 
    [] => 
    [] => 
    [] => 
    [] => 
)
Array
(
)
Array
(
    [] => 
)
Array
(
    [] => 
    [] => 
)
           

数组索引

语法“index=>values”,用逗号分开,定义了索引和值。索引可以是字符串或数字。如果省略了索引,会自动产生从0开始的整数索引。如果索引是整数,则下一个产生的索引将是目前最大的整数索引+1。注意如果定义了两个完全一样的索引,则后面一个会覆盖前一个。

$fruits = array (
    "fruits"  => array("a" => "orange", "b" => "banana", "c" => "apple"),
    "numbers" => array(, , , , , ),
    "holes"   => array("first",  => "second", "third")
);
print_r($fruits);

$array = array(, , , ,  ,  => ,   => , ,  => );
print_r($array);

# 从1开始索引
$firstquarter = array( => 'January', 'February', 'March');
print_r($firstquarter);

$foo = array('bar' => 'baz');
echo "Hello {$foo['bar']}!"; // Hello baz!
           

结果:

Array
(
    [fruits] => Array
        (
            [a] => orange
            [b] => banana
            [c] => apple
        )

    [numbers] => Array
        (
            [] => 
            [] => 
            [] => 
            [] => 
            [] => 
            [] => 
        )

    [holes] => Array
        (
            [] => first
            [] => second
            [] => third
        )

)
Array
(
    [] => 
    [] => 
    [] => 
    [] => 
    [] => 
    [] => 
    [] => 
)
Array
(
    [] => January
    [] => February
    [] => March
)
Hello baz!
           

数组末尾添加元素array_push()

  • array_push()将array当成一个栈,并将传入的变量压入array的末尾。array的长度将根据入栈变量的数目增加。
  • $arr[]=与array_push()效果相同,但是其效率比array_push()高出将近一倍!
$arr = array();
array_push($arr, , , );
print_r($arr);

$arr = array();
$arr[] = ;
$arr[] = ;
$arr[] = ;
print_r($arr);
           

结果:

Array
(
    [] => 
    [] => 
    [] => 
)
Array
(
    [] => 
    [] => 
    [] => 
)
           

删除数组末尾的一个元素array_pop()

array_pop() 弹出并返回array数组的最后一个单元,并将数组array的长度减一。如果array为空(或者不是数组)将返回NULL。

$arr1 = array("a", "b","c","d");
$temp = array_pop($arr1);
print_r($arr1);
print_r($temp);
           

结果:

Array
(
    [] => a
    [] => b
    [] => c
)
d
           

在数组的开始添加一个或多个元素array_unshift()

array_unshift() 将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的字符串键名保持不变。

$arr1 = array("c","d");
array_unshift($arr1,"a","b");
print_r($arr1);
           

结果:

Array
(
    [] => a
    [] => b
    [] => c
    [] => d
)
           

删除数组第一个元素array_shift()

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

$arr1 = array("a","b","c","d");
echo (array_shift($arr1)). "\n";
print_r($arr1);
           

结果:

a
Array
(
    [] => b
    [] => c
    [] => d
)
           

数组中是否存在指定的元素in_array()

in_array()函数在数组中搜索给定的值,in_array(value,array,type),如果给定的值value存在于数组array中则返回true。如果第三个参数设置为true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回true。

$people = array("Peter", "Joe", "Glenn", "Cleveland");

if (in_array("Glenn",$people)) {
    echo "Match found";
} else {
    echo "Match not found";
}
           

[参考] http://blog.csdn.net/th362cn/article/details/8575344

[参考] http://www.php100.com/cover/php/18.html

[参考] http://www.php100.com/cover/php/155.html

[参考] http://zhidao.baidu.com/link?url=m0sLyMWFeR3Q5LT_3BN1i44wXWJ6E67YrJoamnLEO3Xfe61ylBW4x7KcFsA8-bdZIdbLqE4zz8OHke65guWHpK