news 2026/6/23 13:01:40

PHP数组键名与索引操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP数组键名与索引操作

PHP数组键名与索引操作

PHP数组的键名可以是整数或字符串。不同键名类型的行为不一样。今天说说数组键名的使用技巧。

数字键名和字符串键名的区别。

```php
$arr = [1, 2, 3];
$arr['name'] = '张三';
$arr[] = 4;
print_r($arr);
// 自动索引: 最大数字键+1
?>

键名的自动转换。

```php
// 字符串数字键会被转成整数
$arr = ['1' => 'a', '2' => 'b'];
var_dump($arr);
// 键名是整数1和2

// null变成空字符串
$arr[null] = '空键';
echo $arr[''] . "\n";

// true变成1,false变成0
$arr[true] = '真';
echo $arr[1] . "\n";
?>

键名存在性检查。

```php
$arr = ['name' => '张三', 'age' => 28, 'email' => null];

echo isset($arr['name']) ? '存在' : '不存在' . "\n";
echo isset($arr['email']) ? '存在' : '不存在' . "\n"; // null的键被认为不存在
echo array_key_exists('email', $arr) ? '存在' : '不存在' . "\n"; // true

if (key_exists('name', $arr)) {
echo "name键存在\n";
}
?>

获取所有键名和值。

```php
$arr = ['a' => 1, 'b' => 2, 'c' => 3];

$keys = array_keys($arr);
print_r($keys);

$values = array_values($arr);
print_r($values);

$keyValue = array_flip($arr);
// 值变成键名(值必须可作键名)
print_r($keyValue);
?>

数组指针操作。

```php
$arr = [10, 20, 30, 40, 50];

echo current($arr) . "\n"; // 10
echo next($arr) . "\n"; // 20
echo next($arr) . "\n"; // 30
echo prev($arr) . "\n"; // 20
echo end($arr) . "\n"; // 50
echo reset($arr) . "\n"; // 10
?>

数组键名在JSON编码时的行为。

```php
$arr1 = ['a', 'b', 'c'];
echo json_encode($arr1) . "\n"; // ["a","b","c"]

$arr2 = ['name' => '张三', 'age' => 28];
echo json_encode($arr2, JSON_UNESCAPED_UNICODE) . "\n"; // {"name":"张三","age":28}

$arr3 = [0 => 'a', 2 => 'b', 3 => 'c'];
echo json_encode($arr3) . "\n"; // {"0":"a","2":"b","3":"c"},键名不连续时变成对象
?>

理解PHP数组的键名机制很重要。isset和array_key_exists的区别要分清。键名的自动转换可能导致意外的行为,特别是在从数据库读取数据时。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 13:00:50

RT5xx硬件AES加密实战:PUF密钥与CTR模式构建嵌入式安全堡垒

1. 项目概述:在RT5xx上构建硬件级AES加密方案在嵌入式开发,尤其是物联网和边缘计算设备中,数据安全不再是“加分项”,而是“必选项”。最近在为一个工业网关项目做安全加固时,我深入研究了NXP RT5xx系列微控制器的硬件…

作者头像 李华
网站建设 2026/6/8 19:06:50

BSManager:一键解决Beat Saber版本管理难题的终极指南

BSManager:一键解决Beat Saber版本管理难题的终极指南 【免费下载链接】bs-manager An all-in-one tool that lets you easly manage BeatSaber versions, maps, mods, and even more. 项目地址: https://gitcode.com/gh_mirrors/bs/bs-manager 你是否曾因Be…

作者头像 李华
网站建设 2026/6/9 23:16:35

蓝牙LE设备无线固件升级(OTA)实战:基于NXP FRDM-KW36与MCUXpresso

1. 项目概述:为什么蓝牙LE设备的无线固件升级如此重要?在物联网和嵌入式开发领域,设备一旦部署到现场,无论是挂在工厂车间的传感器,还是戴在用户手腕上的智能手环,物理接触都变得异常困难甚至不可能。想象一…

作者头像 李华