[英]Is it possible for a variable to reference itself
我從來沒有用一種語言看到過這樣的東西,但是我正在使用PHP數組,它會非常有用,但是我很好奇。
常規變量是否可以引用自身。 例如:
$variable_array = array(1, 2);
$variable_array = array_merge(self, array(3, 4));
要么
$variable_string = 'This is a string';
$variable_string = explode(' ', self);
當self
是變量本身,就像this
是對象時。 現在,我知道有人會問為什么不只再次調用該變量,這就是我在這種情況下通常要做的。 但是,為了處理長名稱(例如數組中的命名索引)時的可讀性,這將很有用。
PHP或任何語言都可以做到這一點或類似的東西嗎?
常規變量是否可以引用自身
不(按照您繼續描述的方式),不是。 沒有比使用標識符(變量名)更清楚的了。 那正是它的目的。
$variable_array = array_merge($variable_array, array(3, 4));
想像:
$a = $b = f(self);
我們可以想出一條規則來處理這個問題,但是為什么在我們最終可以弄清楚它的時候打擾呢:
$a = $b = f($a);
處理長名稱(例如數組中的命名索引)時的可讀性
您可能正在考慮Visual Basic的With
PHP沒有優雅的等效項。 您可以:
$shortName = $veryLongName['with']['many']['indexes'];
標題問題的答案是肯定的 : $a = &$a;
。 但這不是您真正想問的。
實際上,您恰好期望對象的功能:
為變量分配以該變量為參數的函數的返回值
$object->modify(); // no parameter, no assignation
或者,您可能正在尋找以參數為參考的函數:
function foo(&$bar) {
$bar = 'buzzle';
}
$qux = 'fizz';
foo($qux);
echo $qux; // output: "buzzle"
沒有其他的。
如果您對此感興趣的唯一原因是
“ ...用於處理長名稱(例如數組中的命名索引)時的可讀性...”
然后,考慮到無論如何您都必須至少鍵入一次長名稱,我想您可以只創建一個對長名稱事物的短名稱引用並使用它。
$short = &$for_example['really']['long']['names']['like']['this'];
$short = explode(' ', $short); // etc.
但這似乎可能最終導致混亂,超出其應有的價值。
因此,由於RandomSeed使我想起了變量引用,我想出了我認為是最有可能獲得的解決方案。
以此為例:
$array['index1']['index2']['index3']['index4'];
$array['index1']['index2']['index3']['index4'] = array_merge(
$array['index1']['index2']['index3']['index4'],
array('test' => 'answer'),
array('test2' => 'answer'));
這在我眼中沒有吸引力,並且很難遵循,尤其是在頁面上或在控制器操作中有多個的情況下。
因此,這是一種替代方法:
$self = &$array['index1']['index2']['index3']['index4'];
$array['index1']['index2']['index3']['index4'] = array_merge(
$self,
array('test' => 'answer'),
array('test2' => 'answer'));
在我的生活環境中進行的快速測試似乎可以驗證它是否有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.