插件窝 干货文章 php数组键值区分类型吗

php数组键值区分类型吗

整数 字符串 转换 例如 422    来源:    2025-03-18

在PHP中,数组的键(key)可以是整数(integer)或字符串(string)。PHP数组的键值对是区分类型的,具体表现如下:

  1. 整数键

    • 如果你使用整数作为数组的键,PHP会将其视为整数类型。
    • 例如:$array = [0 => 'a', 1 => 'b']; 这里的 01 是整数键。
  2. 字符串键

    • 如果你使用字符串作为数组的键,PHP会将其视为字符串类型。
    • 例如:$array = ['name' => 'Alice', 'age' => 25]; 这里的 'name''age' 是字符串键。
  3. 类型转换

    • 如果你使用一个字符串形式的数字作为键(例如 "1"),PHP会将其自动转换为整数类型。
    • 例如:$array = ["1" => 'a', "2" => 'b']; 这里的 "1""2" 会被转换为整数 12
    • 如果你不希望发生这种转换,可以使用纯字符串键,例如 $array = ["01" => 'a', "02" => 'b']; 这里的 "01""02" 不会被转换为整数。
  4. 混合键

    • PHP数组允许混合使用整数和字符串键。
    • 例如:$array = [0 => 'a', 'name' => 'Alice']; 这里的 0 是整数键,'name' 是字符串键。
  5. 浮点数键

    • 如果你使用浮点数作为键,PHP会将其转换为整数。
    • 例如:$array = [1.5 => 'a']; 这里的 1.5 会被转换为整数 1
  6. 布尔值键

    • 如果你使用布尔值作为键,true 会被转换为 1false 会被转换为 0
    • 例如:$array = [true => 'a', false => 'b']; 这里的 truefalse 会被转换为 10
  7. NULL键

    • 如果你使用 NULL 作为键,PHP会将其转换为空字符串 ""
    • 例如:$array = [null => 'a']; 这里的 null 会被转换为 ""

示例代码

$array = [
    0 => 'a',         // 整数键
    '1' => 'b',       // 字符串形式的数字键,会被转换为整数 1
    '01' => 'c',      // 字符串键,不会被转换为整数
    1.5 => 'd',       // 浮点数键,会被转换为整数 1
    true => 'e',      // 布尔值键,true 会被转换为整数 1
    false => 'f',     // 布尔值键,false 会被转换为整数 0
    null => 'g'       // NULL 键,会被转换为空字符串 ""
];

print_r($array);

输出结果

Array
(
    [0] => f
    [1] => e
    [01] => c
    [] => g
)

总结

  • PHP数组的键是区分类型的,整数和字符串键是不同的。
  • 某些类型的键(如字符串形式的数字、浮点数、布尔值、NULL)会被自动转换为整数或字符串。
  • 如果你需要严格区分键的类型,建议使用明确的整数或字符串键。