PHP 数组
像素鱼丸
2024-05-10
671

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 字符串
上一篇
WordPress 自定义模板路径
下一篇

发表评论

注册不是必须的

像素鱼丸
159 文章
2 评论
4 喜欢
最新文章

StarFish 配置框架

一个轻量级的 WordPress 选项框架插件,通过配置化的方式,快速为 WordPress 主题或插件生成后台设置页面。 ✨ 特性 🎯 配置驱动 UI:只需定义数组配置,自动生成完整的表单界面 📱 多页面架构:支持多个独立的设置页面 🎨 丰富的字段类型:包含 15+ 种常用字段类型 🔗 字段依赖系统:实现字段间的联动效果 ✅ 数据验证与清理:自动进行安全清理,防止 XSS 攻击 🚀 零依赖:使用 […]

什么是幽灵按钮

“幽灵按钮”(Ghost Button)是一种常见的网页与移动应用 UI 设计模式,指背景透明(或半透明)、仅通过边框(border)和文字(text)定义的按钮,视觉上“若隐若现”,仿佛“幽灵”一般——因此得名。 核心特征: 无填充色(transparent background) 背景完全透明(或与父容器同色),不遮挡背后内容。 清晰的边框(通常 1–2px 实线) 如 border: 2px […]

付费资源下载时间限制有什么用?

这个功能确实挺常见的,它背后的逻辑其实不是“防君子”,而是“防小人”和“控成本”。有没有必要做,主要取决于你平台上的资源类型和你的运营阶段。 我们可以从三个角度来看看这个“10天有效期”到底有什么用: 增加倒卖和二次传播的成本(防黄牛) 这是最核心的意义。如果你的资源是虚拟商品(比如教程、源码、素材包),用户付一次钱理论上可以无限复制。 如果没有有效期: 一个人买了,转手挂到闲鱼或者别的群里卖,你 […]

测试产品

生成中...
扫描二维码
扫描二维码
确认购买

您确定要购买此资源吗?

微信扫码支付

请使用微信扫描二维码完成支付

订单号:

等待支付...