【问题标题】:update multidimensional array更新多维数组
【发布时间】:2015-11-25 08:37:50
【问题描述】:

我有一个多维数组,其中包含来自辛普森一家的角色名称(homver、Marge 和 bart),并且我在 foreach 循环中回显了键和值。我想在每个字符名称旁边有两个输入框,用于更新每个特定名称的 id 和大小。

我有下面的代码。这些值显示在输入框中,但它们没有更新:(

提前感谢所有帮助

代码

 //
    <?php
session_start();

 $array=array(
'Homer' => Array
(
    'id' => 111,
    'size' => 54

),
  'Marge' => Array
(
    'id' => 222,
    'size' => 12

),
'Bart' => Array
(
    'id' => 333,
    'size' => 3
)
);


////////////////////////////////////
if (isset($_POST["submit"])) {
 for ($i = 0; $i < count($_POST['names']); $i++) {
    $names = $_POST['names'][$i];
    $ids = $_POST['ids'][$i];
    $sizes = $_POST['sizes'][$i];
 }
}
////////////////////////////////////
echo "<form method='post' action=''>";

// put the array in a session variable
if(!isset($_SESSION['simpsons']))
$_SESSION['simpsons']=$array;


// getting each array in a foreach loop         
foreach( $_SESSION['simpsons'] as $character => $info) { 

        echo $character.': id is '.$info['id'].', size is '.$info['size'];
        //add and update input box for each ' id '      and    '  size '


?>

<input type="text" name="names[]" value="<?php echo $character;?>" />
<input type="text" name="ids[]" value="<?php echo $info['id'];?>" />
<input type="text" name="sizes[]" value="<?php echo $info['size'];?>" />

<?php

echo"<br/>"; 
}

?>

<!-- submit button for the form -->
<input class="inputbox" type="submit" value="Update value of key"     name="submit"/>
</form>

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    问题

    让我们看看你的代码在用户提交表单时做了什么...

    if (isset($_POST["submit"])) {
     for ($i = 0; $i < count($_POST['names']); $i++) {
        $names = $_POST['names'][$i];
        $ids = $_POST['ids'][$i];
        $sizes = $_POST['sizes'][$i];
     }
    }
    

    太好了。您获取表单数据,并遍历 simpsons 数组中的每个字符,以及每个字符集 $names$ids$sizes

    我看到了两个问题。

    1. 我上面提到的您设置的三个变量不是数组,而是在循环中的该迭代中为特定字符保存单个值。

    2. 没有对变量做任何事情。为一个字符设置值,然后为下一个字符覆盖。没有对数据做任何事情。

    一种可能的解决方案

    让我们对表单中的数据做一些事情。这是我的解决方案。

    if (isset($_POST["submit"])) {
     $newArray = [];
     for ($i = 0; $i < count($_POST['names']); $i++) {
       $newArray[$_POST['names'][$i]] = [
         'id' => $_POST['ids'][$i],
         'size' => $_POST['sizes'][$i]
       ];
     }
     $_SESSION['simpsons'] = $newArray;
    }
    

    如果表单提交,我们会创建一个新的临时数组。然后我们为每个字符添加新的子数组及其设置的 id 和大小。然后我们将该数组放入会话中。

    【讨论】:

    • 哇很好的解释。太感谢了! @飓风发展
    • 我可以收到你的电子邮件吗?我想提出一些建议
    • @Jakie spencer@hurricanedevelopment.com
    猜你喜欢
    • 1970-01-01
    • 2012-09-07
    • 2021-10-26
    • 1970-01-01
    • 2015-06-11
    • 2020-04-06
    • 1970-01-01
    • 2014-01-23
    • 2013-11-11
    相关资源
    最近更新 更多