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

// 检查数组里是否有指定的键名或索引
$is_true = array_key_exists('first', $search_array);

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

$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
飞翔的鱼丸
41934 阅读
85 发布
3 收藏
动态
MirageV 主题 2.12.1 发布
BotV 插件 v1.9.0 发布
MirageV 主题 v2.6.4 发布
BotV 插件 v2.1.0 发布
FishV 主题 v1.14 发布
LandV 企业主题 v2.6.0 发布
MirageV 主题 v2.5 正式发布
BotV 插件 v1.7.0 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码