2013-11-01 78 views
0

的一部分我已經做在PHP一個多形式存儲在多維數組的數據(我已經創建了一個陣列內$_SESSION陣列並把它命名$_SESSION['inserimento'])迴路多維數組

然後我有$_SESSION['inserimento']['name'],$_SESSION['inserimento']['city'] .. 。

我想給strtolower()功能適用於所有的值增加他們之前到mysql

我試過這個代碼,但它不工作

foreach ($_SESSION['inserimento'] as $k=>$v){ 
    $v=strtolower($v); 
} 

我想我誤解了如何在多維數組上進行循環。

+0

嘗試var_dump($ _ SESSION ['inserimento']);之前的foreach –

回答

6

使用array_map()的功能適用於所有的數組中的元素:

$_SESSION['inserimento'] = array_map('strtolower', $_SESSION['inserimento']); 

或常規foreach循環(循環$v裏面是一個副本,所以你需要影響到原來的數組):

foreach ($_SESSION['inserimento'] as $k => $v) { 
    $_SESSION['inserimento'][$k] = strtolower($v); 
} 

或者參考foreach循環($v不再是一個拷貝,它是將原始元素的引用):

foreach ($_SESSION['inserimento'] as &$v) { 
    $v = strtolower($v); 
} 
unset($v); // remember to unset, or $v will still be a reference to the last element after the loop 
+0

對'array_map'選擇+1 –

1

用途:

foreach ($_SESSION['inserimento'] as $k => $v) { 
    $_SESSION['inserimento'][$k] = strtolower($v); 
} 

這是發生,因爲$v是迭代內部值的副本,不包含該值的變量的引用。

+0

是的,這是有道理的!感謝 – GabAntonelli

0

您需要在foreach loop之外定義一個變量。

$lowerValue = ''; 
foreach ($_SESSION['inserimento'] as $k => $v) { 
    $lowerValue = strtolower($v); 
} 
0

嘗試使用array_walk

array_walk($_SESSION['inserimento'], function(&$value, $key) { 
    $value = strtolower($value); 
}); 

$value&表示該變量通過引用傳遞。