如何从不完整的关联数组中获取键/值?

时间:2011-11-04 08:02:24

标签: php arrays

我有这种阵列:

   $a = array(
    'one' => 'one',
    '0' => '0',
    'two' => 'two',
    'three' => 'three',
    'four'              
   );

你可以看到它是一个关联数组但是并非所有的键都有值(看看最后一个)。 我的问题是,我如何循环这种数组来获取密钥(如果存在)和相应的值?

谢谢!

4 个答案:

答案 0 :(得分:7)

示例中的字符串'four'不是键,而是值。相应的密钥为1。这是因为PHP将字符串键'0'转换为数字键0,而值'four'则使用下一个数字键1

Reference

  

键可以是整数或字符串。如果一把钥匙是标准   表示整数,它将被解释为这样(即“8”   将被解释为8,而“08”将被解释为“08”)

要拥有一个没有价值的密钥,您可以使用NULL作为值:

'four'  => null

与空键一样使用null作为键:

null => 'four'

要遍历这样的数组,您可以使用foreach循环。要检测键/值是否为空,可以使用isset函数。

答案 1 :(得分:1)

使用var_dump($a);,您会看到所有键和值:

array(5) {
    ["one"]   => string(3) "one"
    [0]       => string(1) "0"
    ["two"]   => string(3) "two"
    ["three"] => string(5) "three"
    [1]       => string(4) "four"
}

答案 2 :(得分:0)

您可以使用foreach构造:

foreach($a as $key=>$val){
    // $key is a current key
    // $val is tha current value associated
}

答案 3 :(得分:0)

PHP: Arrays

中所述
  

键可以是整数或字符串。如果一个键是整数的标准表示,它将被解释为这样(即“8”将被解释为8,而“08”将被解释为“08”)。键中的浮点数被截断为整数。索引和关联数组类型在PHP中是相同的类型,它们都可以包含整数和字符串索引。

所以你无法区分键'0'和0.你的最后一个元素不是键,它是一个带有自动增量整数键1的值。你可以查看var_dump($a)

array(5) {
  ["one"]=>
  string(3) "one"
  [0]=>
  string(1) "0"
  ["two"]=>
  string(3) "two"
  ["three"]=>
  string(5) "three"
  [1]=>
  string(4) "four"
}

如果您可以确保所有密钥都不以数字开头,那么您可以像往常一样迭代数组,并使用is_int测试密钥。

相关问题