PHP 数组

PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。 由于 array 的值可以是其它 array 所以树形结构和多维 array 也是允许的。

它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等等。

定义数组 array()

可以用 array() 语言结构来新建一个 array。它接受任意数量用逗号分隔的 键(key) => 值(value) 对。

$arr = array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)

// 可以用短数组语法 [] 替代 array() 
$arr = [
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
]

最后一个数组单元之后的逗号可以省略。key 可以是 integer 或者 string。value 可以是任意类型。

用方括号语法访问数组单元

数组单元可以通过 array[key] 语法来访问。

用方括号的语法新建/修改

可以通过明示地设定其中的值来修改现有的 array 。

这是通过在方括号内指定键名来给 array 赋值实现的。也可以省略键名,在这种情况下给变量名加上一对空的方括号([])。

$arr[key] = value;

$arr[] = value;

// key 可以是 int 或 string

// value 可以是任意类型的值

获取数组的长度 – count() 函数

count() 函数用于返回数组的长度(元素的数量):

遍历数值数组

遍历并打印数值数组中的所有值.

$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
 
for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
 
foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}

删除键值

删除某键值对,对其调用 unset() 函数。

<?php
$arr = array(5 => 1, 12 => 2);

$arr[] = 56;    // 这与 $arr[13] = 56 相同;
                // 在脚本的这一点上

$arr["x"] = 42; // 添加一个新元素
                // 键名使用 "x"
           
unset($arr[5]); // 从数组中删除元素
unset($arr);    // 删除整个数组
?>

数组解包

可以使用 [](自 PHP 7.1.0 起)或者 list() 语言结构解包数组。这些结构可用于将数组解包为不同的变量。

$source_array = ['foo', 'bar', 'baz'];

[$foo, $bar, $baz] = $source_array;

echo $foo;    // 打印 "foo"
echo $bar;    // 打印 "bar"
echo $baz;    // 打印 "baz"
?>

$source_array = [
    [1, 'John'],
    [2, 'Jane'],
];

foreach ($source_array as [$id, $name]) {
    // 这里是 $id 和 $name 的逻辑
}

转换为数组

对于任意 int,float, string,bool 和 resource 类型,如果将一个值转换为 array,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。换句话说,(array)$scalarValue 与 array($scalarValue) 完全一样。

如果将 object 类型转换为 array,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:整数属性不可访问; 私有变量前会加上类名作前缀;保护变量前会加上一个 ‘*’ 做前缀。这些前缀的前后都各有一个 NUL 字节。 未初始化的类型属性将会被丢弃。

class A {
    private $B;
    protected $C;
    public $D;
    function __construct()
    {
        $this->{1} = null;
    }
}

var_export((array) new A());

数组排序

sort() – 对数组进行升序排列
rsort() – 对数组进行降序排列
asort() – 根据关联数组的值,对数组进行升序排列
ksort() – 根据关联数组的键,对数组进行升序排列
arsort() – 根据关联数组的值,对数组进行降序排列
krsort() – 根据关联数组的键,对数组进行降序排列

数组的索引和值操作


$originalArray = array(
    "a" => "apple",
    "b" => "banana",
    "c" => "cherry"
);
 
// 获取所有键
$keys = array_keys($originalArray);
 
// 获取所有值
$values = array_values($originalArray);
 
// 组成新的数组
$newArray = array_combine($keys, $values);
 
print_r($newArray);

检查数组中是否存在某个值

$people = array("one", "two", "three", "four");

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

 

添加元素到数组

[] 运算符或 array_push() 函数可以用来添加元素到数组末尾。

$arr[] = 'grape'; // 使用运算符
array_push($arr, 'watermelon'); // 使用函数

删除数组中的元素

unset() 函数删除指定的元素。 array_pop() 移除并返回数组的最后一个元素。 array_shift() 移除并返回数组的第一个元素。

unset($arr[1]); // 删除索引为 1 的元素
$lastElement = array_pop($arr); // 移除最后的元素
$firstElement = array_shift($arr); // 移除第一个元素

合并数组

array_merge() 函数合并一个或多个数组。

$arr1 = array('a', 'b');
$arr2 = array('c', 'd');
$mergedArr = array_merge($arr1, $arr2);

遍历数组

foreach 循环遍历数组元素。

foreach ($arr as $value) {
    echo $value;
}

搜索数组

in_array() 检查值是否存在于数组中。 array_search() 查找数组中第一次出现给定值的键名。

if (in_array('apple', $arr)) {
    echo "Apple is in the array";
}
$key = array_search('apple', $arr);

获取数组长度

count() 或 sizeof() 函数返回数组中的元素数量。

$length = count($arr);

数组映射

array_map() 函数将回调函数应用到数组的每个元素上。

$newArray = array_map(function($item) {
    return strtoupper($item);
}, $arr);

数组过滤

array_filter() 函数用回调函数过滤数组的元素。

$filteredArray = array_filter($arr, function($item) {
    return strlen($item) > 4; // 只保留字符串长度大于4的元素
});

这些只是 PHP 中可用的数组操作的一部分。根据你的具体需求,你可能会使用不同的函数或组合多个函数来实现所需的功能。如果你有特定的需求或问题,请告诉我,我可以提供更详细的指导。

收藏
评论
打赏
PHP语言参考
PHP 字符串
2024-05-10
WordPress 主题开发未分类
WordPress 自定义模板路径
2024-05-10
飞翔的鱼丸
34594 阅读
78 发布
2 收藏
动态
MirageV 主题 v2.5 正式发布
FishV 主题 v1.14 发布
LandV 企业主题 v2.6.0 发布
MirageV 主题 v2.6.0 发布
BotV 插件 v1.7.0 发布
MirageV-App 小程序 v1.2.2 发布
LandV-App 企业官网小程序 v1.1.0 发布
FishV 主题 v1.12 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码