2014-03-18 40 views
0

當我向該函數發送一個數組和值時,我希望它向數組中插入一個新的鍵(id)和它的$value,但它不會'牛逼Foreach不插入數組元素中的鍵和值

function AddID($tab,$value){ 
    foreach($tab as $element){ 
     $element['id']=$value; 
    } 
    return $tab; 
} 

有人能向我解釋什麼,我做錯了什麼?

編輯:

輸入:

$result1=$function1($search_string); 
    $result_array1 = CreateArray($result1); 
    $result_array1 = AddID($result_array1,"profile"); 

(CreateArray工作正常,它是MySQL的提取陣列)

輸出:

array (size=3) 
    0 => 
    array (size=22) 
     0 => string '[email protected]' (length=17) 
     'Email' => string '[email protected]' (length=17) 
     1 => string 'innov24' (length=7) 
     'NickName' => string 'innov24' (length=7) 
     2 => string 'TCA-Innov24' (length=11) 
     'Company' => string 'TCA-Innov24' (length=11) 
     3 => string 'hahaha' (length=6) 
     'LastName' => string 'hahaha' (length=6) 
     4 => string 'pouet' (length=5) 
     'FirstName' => string 'pouet' (length=5) 
     5 => string 'Antarctica' (length=10) 
     'Country' => string 'Antarctica' (length=10) 
     6 => string 'Dans mon igloo' (length=14) 
     'City' => string 'Dans mon igloo' (length=14) 
     7 => string 'Journalist' (length=10) 
     'Name' => string 'Journalist' (length=10) 
     8 => string '1' (length=1) 
     'ID' => string '1' (length=1) 
     9 => string '290' (length=3) 
     'AqbPoints' => string '290' (length=3) 
     10 => string 'AQ' (length=2) 
     'count' => string 'AQ' (length=2) 
+0

舉個例子輸入和輸出請 – barell

回答

0

您需要pass by reference$element。到文檔的鏈接可以比我能更清楚地解釋它,但這裏是一個報價:

您可以通過引用傳遞變量的函數,因此函數可以 修改變量。

你的功能應該是這樣的:

function AddID($tab, $value){ 
    foreach($tab as &$element) { // Notice the &$element 
     $element['id'] = $value; 
    } 

    return $tab; 
} 

下面是代碼運行:https://ideone.com/ax311G

如果你不想通過引用傳遞,你必須創建從一個新的陣列現有的:

function AddID($tab, $value){ 
    $newArray = array(); 
    foreach($tab as $element){ 
     $element['id'] = $value; 
     $newArray[] = $element; // Adds to new array 
    } 
    return $newArray; 
} 
+0

謝謝,它的工作原理就像一個魅力,但結構正在一點點不同: 10 = >字符串'AQ'(長度= 2) 'count'=>字符串'AQ'(長度= 2) 'id'=> string'profile'(length = 7) – user3434509

+0

是的, - Ayush Chaudhary的解決方案包括實際的鑰匙。對於你的問題仍然有點困惑。 – SamV

0
foreach($tab as $value) { 
    $element[] = $value; 
      ^^--shorthand for "array_push()" 
} 
0

您需要通過引用或使用數組的密鑰對其進行修改。您還需要確保$tab數組的每個元素也是一個數組,如果不是的話,您可以將其轉換爲數組。

這裏是一個需要照顧的這兩種情況下的解決方案:

function AddID($tab,$value){ 
    foreach($tab as $k => $v) { 
     if (is_array($v)) { 
      $tab[$k]['id']=$value; 
     } else { 
      $tab[$k] = array($v, 'id' => $value); 
     } 
    } 
    return $tab; 
}