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

array_walkを使用してみてください

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

&beforeは、$value変数が参照によって渡されることを示します。

于 2013-11-01T13:19:28.050 に答える
0

の外で変数を定義する必要がありますforeach loop

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