php - 如何添加或显示动态数组变量

标签 php mysql sql arrays dynamic-programming

我正在将我的多维后变量转换为动态变量,如下所示:

foreach($_POST as $k => $v){
   ${$k} = $v;
}

所以我的新数组看起来像这样:

Array(
   [name] => Joe
   [surname] => Blogs
   [study] => Array
        (
            [0] => English
            [1] => IT
        )
   [school] => Array
        (
            [0] => Array
                (
                    [0] => Some School Name
                    [1] => 03/09/2015
                    [2] => Present
                )    
        )
)

因此,如果我想获取学校名称,此代码将起作用:

echo $school[0][0];

但是,我很难在如下的 sql 语句中使用这个变量:

$sql = "INSERT INTO table (name, surname, subject_1, subject_2, school1_name, school1_datefrom, school1_dateto) VALUES ('$name', '$surname', '$subject[0]', '$subject[1]', '$school[0][0]', '$school[0][1]', '$school[0][2]', '$school[0][3]')";

echo $sql;

所有不是数组或单级数组的变量,如 study 都显示正常,但学校变量如 $school[0][0] 显示为'数组[0]'、'数组[1]'………… 为什么要这样做,是否可以让这些变量正确显示?

最佳答案

如果您将数组值包装在 {} 中,那么它应该可以正常工作。我不记得这背后的原因,但试试吧。

$sql = "INSERT INTO table (name, surname, subject_1, subject_2, 
                           school1_name, school1_datefrom, 
                           school1_dateto) 
              VALUES ('$name', '$surname', '{$subject[0]}', 
                      '{$subject[1]}', '{$school[0][0]}',
                       '{$school[0][1]', '{$school[0][2]}', 
                       '{$school[0][3]}')";

我记得现在叫 Complex (curly) syntax

不是因为语法复杂,而是因为它允许使用复杂的表达式。

关于php - 如何添加或显示动态数组变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32397685/

相关文章:

javascript - 如何使用 while 循环将 php 中的数据传输到 javascript

php - 去除 PHP 中所有空的 HTML 标记对

MySQL 还不支持 'LIMIT & IN/ALL/ANY/SOME subquery'

mysql - sql 准备语句 : INSERT INTO if not exist

mysql - 我是否应该对表进行非规范化,是否应该对 FK 列进行非规范化

php - 用碳增加秒数

c# - NHibernate MySQL 映射设置列类型

php - 一张mysql表中的类别和子类别

MySQL:存储过程插入语句错误

php - 使用 fromRange 和 toRange 映射一个值?