Как добавить или отобразить переменные динамического массива

Я конвертирую свои многомерные переменные-столбцы в динамические переменные, как показано ниже:

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]» ………
Почему это происходит, и я могу заставить эти переменные отображаться правильно?

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]}')";

Я помню сейчас называется Сложный (фигурный) синтаксис

Не потому что синтаксис сложен, а потому что он позволяет использовать сложные выражения.

2

Другие решения

замещать

$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]}')";
0

Оберните переменную в {}, Он должен работать. Фигурные скобки используются для явного указания конца имени переменной.

Быстро…

$number = 4;
print "You have the {$number}th edition book";
//output: "You have the 4th edition book";

С помощью фигурных скобок PHP попытается найти переменную с именем $ numberth, которой не существует!

надеюсь это поможет.

Ссылка

0
По вопросам рекламы [email protected]