2015-09-04 2 views
1

Я преобразования мои многомерные пост переменные для динамических переменных, как показано ниже:Как добавить или отображения динамических переменных массива

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]; 

Однако я изо всех сил стараюсь использовать этот var iable в операторе 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] показываете как «Array [0]», «Массив [1] '......... Почему он это делает и есть, я могу заставить эти переменные отображать правильно?

ответ

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

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

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

+0

спасибо, что работал. я думаю, для простоты я буду обертывать каждую переменную в фигурной скобке, включая переменные, которые не являются массивом, и просто помню этот синтаксис, как правило, когда я прихожу к добавлению переменных в sql-запрос – Ahm3d

0

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

Быстро ...

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

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

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

Ref.

0

заменить

$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]}')"; 
Смежные вопросы