2013-04-09 77 views
0

我在我的文檔的開始處有一個foreach循環,它從數組中提取數據並設置稍後使用的一些變量。假設對於這個例子,$foo具有10個陣列其中密鑰爲IDName通過兩個相同的foreach循環傳遞變量

foreach($foo as $bar) { 
    $id = $bar['id']; 
    $name = $bar['name']; 
} 

那麼,我想要做的是,進一步沿着我的文檔,我其實是想顯示這些結果對每個$bar中,我想做到這一點。

foreach($foo as $bar) { 
    // display all ids 
    echo $id; 
    // display all names 
    echo $name; 
} 

但我遇到了問題。當試圖在第二個foreach循環中顯示ID和名稱時,它會返回10個ID的情況,但ID完全相同,並且是$foo中最後一個數組的ID。

10, 10, 10, 10, 10, 10, 10, 10, 10, 10 

如果我回聲出在第一foreach循環的$id$name,我看到所有的10個不同的名稱和ID。

1,2,3,4,5,6,7,8,9,10 

我不能在同一個數組上調用第二個foreach循環嗎?如何在不將所有內容都放入單個foreach循環的情況下執行此操作?我想保持它的組織結構並將變量放在最前面,同時在文檔中輸出所有內容。

+2

您的第一個循環是簡單地創建兩個瓦爾的標識和名稱,並覆蓋值每次迭代 – 2013-04-09 14:50:50

回答

0

雖然這個目的,你不需要兩個循環,但讓我們說,你這樣做,那麼你的第二個循環應該像

foreach($foo as $bar) { 
$id = $bar['id']; 
$name = $bar['name']; 
// display all ids 
echo $id; 
// display all names 
echo $name; 
} 
與你對你的id和name變量賦新值,每次迭代

目前因此在循環結束後你會看到最後一個。

也只是爲了參數的緣故,如果您需要分別使用這兩個循環,則可以在第一個循環中創建一個數值數組,然後在第二個循環中使用該數組。但同樣的資源浪費,重複一切

$data=array(); 
foreach($foo as $bar) { 
    $data[]["id"] = $bar['id']; 
    $data[]["name"] = $bar['name']; 
} 

然後

foreach($data as $bar) { 
$id = $bar['id']; 
$name = $bar['name']; 

echo $id; 
echo $name; 
} 

但是,這是完全不必要的

+0

我認爲這個問題是他想創造新的變量,但他只是覆蓋它們,你的例子只是打印他們的價值...如果我是正確的... – Matija 2013-04-09 14:52:58

+0

我想設置變量,然後在稍後的文檔中調用它們。我試圖避免在整個文檔中創建5個相同的循環。一個循環將得到只是id和名稱,另一個會得到一張照片和標題,另一個循環會顯示一個帖子和時間戳。 – Ryan 2013-04-09 14:54:30

+0

@Ryan查看編輯 – 2013-04-09 14:56:27

0

你的意思是要顯示所有的ID,那麼所有的名字? 如果是這樣,你可以使用下面的例子。

第一個循環是。

foreach ($foo as $bar) { 
    $ids[] = $bar['id']; 
    $names[] = $bar['name']; 
} 

然後,而不是你可以使用的第二個循環。

echo explode($ids,","); 
echo explode($names,","); 
相關問題