在其值中引用数组键

时间:2013-01-09 09:38:31

标签: php arrays key-value

我知道这似乎是应该通过设计避免的东西,但我们只是说它是非常需要的: 是否可以在初始化时引用属于某个值的键?

这就是我的想象(不完全是我需要它的情况,但关键是原始的):

$array = array(25 => "My key is " . $this->key);

我需要这个,因为数组键用在每个值中。实际上,该值是另一个数组,其具有使用第一个数组键的值。就像我在评论中说的那样,我想保持干燥。这样做没有问题,但我想做得好;)

2 个答案:

答案 0 :(得分:1)

如果您自己编写数组,可以将键值放在数组值中,如:

$array = array(25 => "My key is 25");

如果您已有阵列,则可以使用foreach并将所有键添加到其值:

foreach($array as $key => $value) {
    $array[$key] = sprintf('%s %s', $value, $key);
}

或者,如果您只想拥有现有数组的键数组,则可以使用array_flip,如果要维护key =>值,则可以翻转键和值。或者,如果您只想要一组键,则可以使用array_keys

要制作你想要的东西:在某个地方初始化一个数组,不要添加任何键,你可以实现ArrayAccessCountable并且有:

public function offsetGet($offset) {
    return isset($this->container[$offset]) 
                ? $this->container[$offset] . ' ' . $offset 
                : null;
}

或类似的东西。但在这种情况下,您需要将包含此数组的变量作为ArrayAccess实现的实例。根据这个类的用法,你可能需要实现更多的接口。

答案 1 :(得分:0)

不,在定义值时无法引用该键。除了编写一个将它嵌入字符串的预处理器之外。但这只适用于原始值。