我在PHP中做了一个多步骤形式,将数据存储在一个多维数组中(我在数组中创建了一个数组$_SESSION
并将其命名为$_SESSION['inserimento'])
然后我有$_SESSION['inserimento']['name'],$_SESSION['inserimento']['city']
...
我想在将它们添加到 mysql 之前将 strtolower()
函数应用于所有值
我试过这段代码,但它不起作用
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
前面的&
表示变量是通过引用传递的。