0

我在 PHP 中完成了一个多步骤表单,将数据存储在一个多维数组中(我在数组中创建了一个数组$_SESSION并将其命名为$_SESSION['inserimento'])

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

我想将该strtolower()函数应用于所有值,然后再将它们添加到 mysql

我已经尝试过这段代码,但它不起作用

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

我想我误解了如何在多维数组上创建一个循环。

4

4 回答 4

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
于 2013-11-01T13:16:39.837 回答
1

采用:

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

发生这种情况是因为$v它是迭代内的值的副本,而不是对包含该值的变量的引用。

于 2013-11-01T13:14:30.407 回答
0

您需要在foreach loop.

$lowerValue = '';
foreach ($_SESSION['inserimento'] as $k => $v) {
    $lowerValue = strtolower($v);
}
于 2013-11-01T13:14:57.800 回答
0

尝试使用array_walk

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

&before表示该$value变量是通过引用传递的。

于 2013-11-01T13:19:28.050 回答