簡體   English   中英

變量是否可以引用自身

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM