Я конвертирую свои многомерные переменные-столбцы в динамические переменные, как показано ниже:
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]}')";
Я помню сейчас называется Сложный (фигурный) синтаксис
Не потому что синтаксис сложен, а потому что он позволяет использовать сложные выражения.
замещать
$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]')";
с
$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]}')";
Оберните переменную в {}, Он должен работать. Фигурные скобки используются для явного указания конца имени переменной.
Быстро…
$number = 4;
print "You have the {$number}th edition book";
//output: "You have the 4th edition book";
С помощью фигурных скобок PHP попытается найти переменную с именем $ numberth, которой не существует!
надеюсь это поможет.