簡體   English   中英

循環多維數組的一部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM