Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在其值中引用数组键_Php_Arrays_Key Value - Fatal编程技术网

Php 在其值中引用数组键

Php 在其值中引用数组键,php,arrays,key-value,Php,Arrays,Key Value,我知道这似乎应该通过设计来避免,但让我们说这是非常需要的: 是否可以在初始化时引用属于某个值的键 下面是我想象中的情况(不是我需要它的情况,但键也是原始的): 我需要这个,因为数组键用于每个值。实际上,该值是另一个数组,其中使用了第一个数组键。就像我在评论中说的,我想保持干燥。做这件事没问题,但我想把它做好;) 如果您自己编写数组,您可以将键值放入数组值中,如下所示: $array = array(25 => "My key is 25"); 如果您已经有一个数组,您可以使用foreac

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

下面是我想象中的情况(不是我需要它的情况,但键也是原始的):


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

如果您自己编写数组,您可以将键值放入数组值中,如下所示:

$array = array(25 => "My key is 25");
如果您已经有一个数组,您可以使用
foreach
并将所有键添加到它的值中:

foreach($array as $key => $value) {
    $array[$key] = sprintf('%s %s', $value, $key);
}
或者,如果您只想拥有一个现有数组的键数组,那么您可以在想要维护key=>value,但要翻转键和值的情况下使用。或者,如果只需要一组键,也可以使用

要实现您想要的:在某个地方初始化数组,不要向其值添加任何键,您可以实现,并且:

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

或者类似的事情。但是在这种情况下,您需要有一个包含此数组的变量作为
ArrayAccess
实现的实例。根据此类的使用情况,您可能需要实现更多接口。

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

$array = array(25 => "My key is 25");
如果您已经有一个数组,您可以使用
foreach
并将所有键添加到它的值中:

foreach($array as $key => $value) {
    $array[$key] = sprintf('%s %s', $value, $key);
}
或者,如果您只想拥有一个现有数组的键数组,那么您可以在想要维护key=>value,但要翻转键和值的情况下使用。或者,如果只需要一组键,也可以使用

要实现您想要的:在某个地方初始化数组,不要向其值添加任何键,您可以实现,并且:

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

或者类似的事情。但是在这种情况下,您需要有一个包含此数组的变量作为
ArrayAccess
实现的实例。根据此类的使用情况,您可能需要实现更多接口。

否,在定义值时无法引用键。除了编写一个将其嵌入字符串的预处理器。但这只适用于基本值。

不,定义值时无法引用键。除了编写一个将其嵌入字符串的预处理器。但这只适用于基本值。

输出是什么样的?这是一个关联数组还是一个常规数组(即带有0..n的键)?为什么不这样做呢
数组(25,…)
?它是一个关联数组。在我之前开发的程序中存在糟糕的设计,现在我必须修复它。我认为你在这里问的是一种实现你的解决方案的方法,而不是你的实际问题。你认为你需要这个是有原因的,如果你可以添加它(而不是“糟糕的设计”),我们可以帮助你找到一个实际的解决方案。输出是什么样子的?这是一个关联数组还是一个常规数组(即带有0..n的键)?为什么不这样做呢
数组(25,…)
?它是一个关联数组。在我之前开发的程序中存在糟糕的设计,现在我必须修复它。我认为你在这里问的是一种实现你的解决方案的方法,而不是你的实际问题。你认为你需要这个是有原因的,如果你可以加上这个(而不是“糟糕的设计”),我们可以帮助你找到一个实际的解决方案。我想继续尝试,这就是为什么不喜欢1(我为什么要问这个问题)。2不是一个选项,因为我想在初始化数组时执行此操作。然后在初始化数组的位置添加一个键值。哎呀,我想写“DRY”而不是try。我不想裁员,我想继续尝试,这就是为什么我不喜欢1(我为什么要问这个问题)。2不是一个选项,因为我想在初始化数组时执行此操作。然后在初始化数组的位置添加一个键值。哎呀,我想写“DRY”而不是try。我不想裁员。