[英]loop for part of a multidimensional array
我已經在PHP中完成了一個多步驟表單,將數據存儲在多維數組中(我已經在$_SESSION
數組中創建了一個數組,並將其命名為$_SESSION['inserimento'])
然后我有$_SESSION['inserimento']['name'],$_SESSION['inserimento']['city']
...
我想將strtolower()
函數應用於所有值,然后再將它們添加到mysql
我已經嘗試過此代碼,但無法正常工作
foreach ($_SESSION['inserimento'] as $k=>$v){
$v=strtolower($v);
}
我想我誤會了如何在多維數組上進行循環。
使用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
采用:
foreach ($_SESSION['inserimento'] as $k => $v) {
$_SESSION['inserimento'][$k] = strtolower($v);
}
發生這種情況是因為$v
是迭代中值的副本,而不是對包含該值的變量的引用。
您需要在foreach loop
之外定義一個變量。
$lowerValue = '';
foreach ($_SESSION['inserimento'] as $k => $v) {
$lowerValue = strtolower($v);
}
嘗試使用array_walk
array_walk($_SESSION['inserimento'], function(&$value, $key) {
$value = strtolower($value);
});
$value
之前的&
表示該變量是通過引用傳遞的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.