2010-08-30 85 views
0

我想知道如果數組中的元素可以「知道」他們是一個數組和參考的內部,其中指出:在PHP中,數組可以在其數組元素中引用自己嗎?

喜歡的東西...

$foo = array(
    'This is position ' . $this->position, 
    'This is position ' . $this->position, 
    'This is position ' . $this->position, 
), 

foreach($foo as $item) { 

    echo $item . '\n'; 
} 

//Results: 
// This is position 0 
// This is position 1 
// This is position 2 

回答

4

他們不能「自我推薦」本身,當然不通過$this->position作爲數組元素不一定是對象。但是,你應該跟蹤自己的位置通過數組迭代的副作用:

// Sequential numeric keys: 
for ($i = 0; $i < count($array); ++$i) { ... } 

// Non-numeric or non-sequential keys: 
foreach (array_keys($array) as $key) { ... } 
foreach ($array as $key => $value) { ... } 

// Slow and memory-intensive way (don't do this) 
foreach ($array as $item) { 
    $position = array_search($item, $array); 
} 
+0

我知道這是可能的,但我是想知道是否有辦法做到這一點沒有foreach聲明。我猜這不是。 – dkinzer 2010-08-30 18:16:52

+1

@DKinzer你可以使用'array_search'來查找數組中某個項目的索引,只給出一個數組及其中的一個元素,但如果沒有索引已經很方便就很難到達該狀態。 – meagar 2010-08-30 18:18:19

2

沒有,PHP的數組是普通的數據結構(對象),沒有這種功能。

您可以使用each()跟蹤陣列中的哪個位置,並跟蹤鍵,但結構本身無法做到這一點。

0

正如你可以在這裏看到:http://php.net/manual/en/control-structures.foreach.php

你可以這樣做:

foreach($foo as $key => $value) { 
    echo $key . '\n'; 
} 

所以你可以存取權限通過$密鑰的密鑰在例如

+0

一旦你定義了數組,你可以這樣訪問它;但我相信OP正在詢問諸如SQL的'LAST_INSERT_ID()'之類的東西 – Piskvor 2010-08-30 18:35:52

相關問題