2010-10-27 104 views
0

我有這個數組我想分別獲取值「ABC」,「1」,「2」等,並將它們存儲在單獨的變量中。 我已經使用嵌套的foreach,但無法得到它如何迭代這個循環獲取每個項目分開

array(2) { 
     [0] => array(3) { 
      [0] => string(10) "ABC" 
      [1] => string(1) "1" 
      [2] => string(2) "2" 
    } [1] => array(3) { 
      [0] => string(10) "BCD118" 
      [1] => string(1) "1" 
      [2] => string(2) "9" 
    } 
    } 
+0

你會怎樣想打電話給你的變量,他們是否應該覆蓋現有的變量,並且爲什麼要將這樣一個易於訪問和結構化的數組轉換爲一堆不相關的標量(您通過此操作解決了什麼問題)? – Wrikken 2010-10-27 21:49:18

回答

2

根據您的$ _SESSION邁克C註釋,

foreach($outer_array as $outer_key => $inner_array) 
{ 
    foreach($inner_array as $key => $value) 
    { 
     $_SESSION[$outer_key.'-'.$key] = $value; 
    } 
} 

雖然或者(比如)'BCD118'和'ABC'都是關鍵字0,所以'ABC'會被覆蓋。

編輯 您可以在$outer_key追加到內$key拿到鑰匙的唯一_SESSION $

這將產生鍵/值對

0-0 : ABC 
0-1 : 1 
0-2 : 2 
1-0 : BCD118 
1-1 : 1 
2-2 : 9 
+0

@brianD:我怎樣才能克服這個情況 – Someone 2010-10-27 20:57:07

+0

我已編輯我的答案,以顯示一種可能的方式 – 2010-10-27 21:04:57

+0

@braind:我有我的自定義會話功能可用,所以當IAM循環它,我不得不將它分配給值。所以在該數組中,我需要得到每個值的關鍵[ 0] [0]應該給我「ABC」,這樣我可以將ABC值設置爲一個字段 – Someone 2010-10-27 21:20:52

0

你的陣列尺寸的[2] [3],所以你應該能夠做到:

for($i = 0; $i < 2; $i++)
{
for($o = 0; $o < 3; $o++)
{
$variable = $array[$i][$o];
}
}

或等效用foreach語句表達,取決於你想要完成的事情。

這當然是有限制的,因爲你真的只能寫入另一個數組。要將它們分解爲單獨的變量,您可能需要靜態引用它們。

1

隨着foreach循環...

foreach ($array as $key=>$value) 
{ 
    foreach ($array[$key] as $subkey=>$subvalue) 
    { 
     echo "$subkey $subvalue\n"; 
    } 
} 
+0

如何將密鑰名稱分配給一個字符串及其值並放入會話中 – Someone 2010-10-27 20:34:05

+0

請參閱布里斯班的回覆 – 2010-10-27 21:53:00

4

你可以使用一個recursiveiteratoriterator

$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($array)); 

foreach ($it as $key => $value) { 
    echo $key . " - " . $value."\n"; 
} 

會給你:

0 - ABC 
1 - 1 
2 - 2 
0 - BCD118 
1 - 1 
2 - 9 
+0

SPL用法。 OO權力! ;) – xPheRe 2010-10-27 20:57:15

+0

我怎樣才能解決這個問題「你需要唯一的密鑰雖然或(例如)'BCD118'和'ABC'都將是關鍵0,所以'ABC'將被覆蓋」 – Someone 2010-10-27 20:59:51