【问题标题】:Can I store an array in a variable? [duplicate]我可以将数组存储在变量中吗? [复制]
【发布时间】:2012-10-30 16:32:33
【问题描述】:

可能重复:
Able to see a variable in print_r()'s output, but not sure how to access it in code

我可以将数组存储在变量中吗?

我有这个数组:

$_POST['product']

当我打印它时:

echo "<PRE>";
print_r($_POST['product']);
echo "</PRE>";

结果是:

<PRE>Array
(
    [0] => Array
        (
            [0] => 1
            [1] => cola
            [2] => wwww
            [3] => 1
            [4] => 2.00
            [5] => 0.00
            [6] => 2.00

        )

)
</PRE>

如何将数组的值存储在变量中?比如我需要在数据库的表中插入[1] =&gt; cola

【问题讨论】:

  • 你能不能……说得清楚一点?你在说$_POST['product'][0][1]吗?

标签: php arrays variables


【解决方案1】:

您必须使用 foreach 循环“扫描”数组并向您的数据库发送 INSERT 查询,如下所示:

<?php
$updateStmt = $pdo->prepare("INSERT INTO table (field) VALUES (:FIELD)");
foreach( $_POST['product'] as $key => $val ){
    $updateStmt->execute(array(
        ':FIELD' => $val
    ));
}
?>

【讨论】:

    【解决方案2】:

    你可以像$_POST['product'][0][1]这样访问数组来获取cola的值。

    对于多次插入数据库,您应该使用 foreach 循环或 for 循环。

    更新

    好的, Foreach 循环

    foreach($_POST['product'] as $product) {
       mysql_query("INSERT INTO YOURTABLENAME('FIELD1','FIELD2'....) VALUES('".$product[0]."','".$product[1]."'....)"); 
    
    }
    

    我更喜欢使用 for 循环。

    $count_array = count($_POST['product']);
    for($i=0; $i>= $count_array; $i++){
       mysql_query("INSERT INTO YOURTABLENAME('FIELD1','FIELD2'....) VALUES('".$_POST['product'][$i]."','".$_POST['product'][$i]."'....)"); 
    }
    

    还有一种通过避免在 for/foreach 循环中插入 sql 来插入数据库的优化方法。 但现在这应该适合你.. :)

    【讨论】:

    • 记得清理你的输入!!!1!11one使用mysql_real_escape_string()、PDO或其他方法。
    【解决方案3】:
    if(!empty($_POST['product'])) {
        $colaVar = $_POST['product'][0][1];
        echo $colaVar; // outputs'cola'
    }
    

    【讨论】:

      【解决方案4】:

      您根本不需要,只需执行以下操作:

      $arr = $_POST['product']
      echo $arr[0][1]
      

      这是访问数组值以执行任何您想做的任何事情的正常方式。

      【讨论】:

      • 你根本不需要那个,只需执行以下操作:echo $_POST['product'][0][1]
      • @AlvinWong 好吧,你说得更对,但在他不想处理或更改密钥值的情况下!
      • 但是我在一个进程上插入了多个数组我该怎么办??
      • @Zamalkawyana 循环遍历数组是解决方案
      • @sємsєм 怎么能在循环中遍历数组??