我知道這似乎是應該避免的設計,但讓我們只是說它是需要的: 是否有可能在初始化時引用屬於某個值的鍵?引用數組中的鍵值
這是我想象它是(不完全在我需要它的情況下,更關鍵的是原始的爲好):
$array = array(25 => "My key is " . $this->key);
我需要這個,因爲數組鍵在每個使用值。實際上,該值是另一個具有使用第一個數組鍵的值的數組。就像我在評論中所說的那樣,我想保持乾爽。這樣做是沒有問題的,但我想這樣做很好;)
我知道這似乎是應該避免的設計,但讓我們只是說它是需要的: 是否有可能在初始化時引用屬於某個值的鍵?引用數組中的鍵值
這是我想象它是(不完全在我需要它的情況下,更關鍵的是原始的爲好):
$array = array(25 => "My key is " . $this->key);
我需要這個,因爲數組鍵在每個使用值。實際上,該值是另一個具有使用第一個數組鍵的值的數組。就像我在評論中所說的那樣,我想保持乾爽。這樣做是沒有問題的,但我想這樣做很好;)
不,在定義該值時無法引用該鍵。除了編寫一個將其嵌入到字符串中的預處理器。但是,這隻適用於原始值。
如果你正在寫一個自己的數組你可以把鍵值改爲數組值,如:
$array = array(25 => "My key is 25");
如果你有一個數組已經可以使用foreach
和所有的鍵添加到它的價值:
foreach($array as $key => $value) {
$array[$key] = sprintf('%s %s', $value, $key);
}
或者,如果你只是想有現有陣列您可以使用array_flip的鍵的數組,如果你想保持鍵=>值,但有鍵和值翻轉。或者如果您只需要一組鍵,則可以使用array_keys。
爲了讓你想要什麼:什麼地方初始化數組,它的價值就可以實現ArrayAccess,Countable並有不添加任何鍵:
public function offsetGet($offset) {
return isset($this->container[$offset])
? $this->container[$offset] . ' ' . $offset
: null;
}
或這樣的事情。但是在這種情況下,你需要一個包含這個數組的變量來作爲你的實現的一個實例。根據這個類的用法,你可能需要實現更多的接口。
我想繼續嘗試,這就是爲什麼1不是首選(任何爲什麼我問這個問題)。 2不是一個選項,因爲我想在數組初始化時執行此操作。 –
然後,只需在陣列正在初始化的位置添加一個鍵值。 –
糟糕,我想寫「幹」而不是嘗試。我不想裁員。 –
輸出結果如何? – Baba
這是一個關聯數組還是一個常規數組(又名0..n的鍵)? –
*爲什麼*你需要那個嗎? – ThiefMaster