在处理数组时,使用array_keys()
来获取数组的键是微不足道的。在处理对象时,我们还有其他函数,如get_object_vars()
来处理这些。
因此,如果我们有两个简单的变量,一个数组和一个对象:
+--------------------+---------------------------+
| Array | Object |
+--------------------+---------------------------+
| $array = array( | $object = new stdClass(); |
| 'foo' => 'bar', | |
| 'john' => 'doe', | $object->foo = 'bar'; |
| 'beep' => 'bop' | $object->john = 'doe'; |
| ); | $object->beep = 'bop'; |
+--------------------+---------------------------+
如果我们获取该函数并将其传递给数组,它将执行我们期望的操作,并给我们一个带有 、 和 的数组:array_keys()foojohnbeep
Return: array(3) {
[0]=> string(3) "foo"
[1]=> string(4) "john"
[2]=> string(4) "beep"
}
当然,正如预期的那样,如果我们将对象传递给它,函数就会爆炸并且不知道该如何处理它(如果我们真的需要,我们可以转换甚至只是将其类型转换为数组):
Return: NULL
WARNING array_keys() expects parameter 1 to be array, object given
但是,如果我们一次处理一个密钥,它似乎会变得更有趣一些。使用PHP的key()函数,我们可以提取我们想要的任何密钥。
key($array); //returns: string(3) "foo"
key($object); //returns: string(3) "foo"
// If we move the internal pointer
end( $array ); // key($array) returns: string(4) "beep"
end( $object ); // key($object) returns: string(4) "beep"
查看 key() 函数的文档,如果使用了 ,这不应该引发警告吗?我问是因为我很好奇,最近被否决了,并被告知不要在物体上使用。通常我使用其他方法,但在某些情况下使用没有警告(或错误) - 所以我决定查看,文档没有说任何关于允许,只是。我想类似的事情可以说数组指针的功能像.objectkey()key()objectarray &$arrayend()
偶然的你