【问题标题】:difficulty adding a key => value pair to a multidimensional associative array using a foreach loop in php使用 php 中的 foreach 循环难以将键 => 值对添加到多维关联数组
【发布时间】:2015-03-07 18:40:16
【问题描述】:

我正在使用多维关联数组来存储用户输入,以便稍后插入到 mysql UPDATE 语句中。

$updateFields = array();
foreach($fields as $column => $field){
    if (isset($_POST[$field]) && !empty($_POST[$field])){
        if($column == "a" || $column == "b" || $column == "c" || $column == "d" || $column == "e" || $column == "f" || $column == "g" ){
            $updateFields[0] = [$column => "$_POST[$field]"];
        }
        else if($column == "h" || $column == "i"){
            $updateFields[1] = [$column => "$_POST[$field]"];
        }
        else if($column == "j" || $column == "k" || $column == "l" || $column == "m"){
            $updateFields[2] = [$column => "$_POST[$field]"];
        }
    }
}

我使用的上述布局创建了数组,但只存储了“父”关联数组中“子”关联数组的最后一个键:值对。

使用 print_r 进行可视化:

Array (
       [0] => Array (
              [g] => value
              ) 
       [1] => Array (
              [i] => value 
              ) 
       [2] => Array ( 
              [m] => value 
              ) 
       )

我想要完成的事情:

Array ( 
       [0] => Array (
              [a] => value 
              [b] => value 
              [c] => value 
              [d] => value 
              [e] => value 
              [f] => value 
              [g] => value 
              ) 
       [1] => Array ( 
              [h] => value 
              [i] => value 
              ) 
       [2] => Array ( 
              [j] => value 
              [k] => value 
              [l] => value 
              [m] => value 
              ) 
       )

我在 stackoverflow 上看到多个线程涉及在关联数组中插入 key:pair 值,所以我希望这不会被视为重复。如果有人感兴趣,我很乐意提供更多信息。

【问题讨论】:

  • 你需要$updateFields[x][$column] = $_POST['field'];,此时你在每次迭代中重新分配$updateFields[x]
  • 谢谢billyonecan。非常简单直接。完美运行。
  • 感谢 Brookesia。也是一个很好的可行解决方案。会记住的。

标签: php mysql multidimensional-array associative-array form-processing


【解决方案1】:

试试这个代码这个代码会起作用

$fields = $_POST;
$updateFields = array();
foreach($fields as $column => $field){
    if (isset($column[$field]) && !empty($column[$field])){
        if($column == "a" || $column == "b" || $column == "c" || $column == "d" || $column == "e" || $column == "f" || $column == "g" ){
            $updateFields[0][$column] =$field;
        }
        else if($column == "h" || $column == "i"){
            $updateFields[1][$column] = $field;
        }
        else if($column == "j" || $column == "k" || $column == "l" || $column == "m"){
            $updateFields[2][$column] = $field;
        }
    }
}
echo "<pre>";print_r($updateFields);

【讨论】:

    【解决方案2】:

    试试这个...

    $updateFields = array();
    foreach($fields as $column => $field){
        if (isset($_POST[$field]) && !empty($_POST[$field])){
            if($column == "a" || $column == "b" || $column == "c" || $column == "d" || $column == "e" || $column == "f" || $column == "g" ){
                $updateFields[0][$column] = $_POST[$field];
            }
            else if($column == "h" || $column == "i"){
                $updateFields[1][$column] = $_POST[$field];
            }
            else if($column == "j" || $column == "k" || $column == "l" || $column == "m"){
                $updateFields[2][$column] = $_POST[$field];
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      相关资源
      最近更新 更多