Ошибка синтаксического анализа: синтаксическая ошибка, неожиданное «required» (T_CONSTANT_ENCAPSED_S

Здравствуйте, у меня код вроде бы написан верно…
А выдает ошибку:

Код (Text):
  1. Ошибка синтаксического анализа: синтаксическая ошибка, неожиданное «required» (T_CONSTANT_ENCAPSED_STRING), ожидающее ‘]’ в W:\domains\localhost\includes\data.php в строке 7

код:

PHP:
  1. <?php
  2.  
  3. $fields = [
  4.         ‘name’ => [
  5.             ‘field_name’ => ‘Имя’,
  6.             ‘required’ => 1,
  7.         ], //тут выдает ошибку…
  8.         ‘phone’ => [
  9.             ‘field_name’ => ‘Номер телефона’,
  10.             ‘required’ => 0,
  11.         ],
  12.         ’email’ => [
  13.             ‘field_name’ => ‘Эл.Почта’,
  14.             ‘required’ => 1,
  15.         ],
  16.         ‘comment’ => [
  17.             ‘field_name’ => ‘Коментарий’,
  18.             ‘required’ => 1,
  19.         ],
  20.  
  21.  
  22.  
  23.        
  24.  
  25.     ‘name’ => [],
  26.     ‘phone’ => [],
  27.     ’email’ => [],
  28.     ‘comment’ => [],
  29.  
  30. ];
 

Добрый день!
У Вас в коде ошибки. Нужно убрать запятые в конце строк:

PHP:
  1. ‘required’ => 1,
  2. ‘required’ => 0,

также, если Вы хотите присвивоить значения элементам массива, то нужно убрать строки

PHP:
  1.     ‘name’ => [],
  2.     ‘phone’ => [],
  3.     ’email’ => [],
  4.     ‘comment’ => [],

и также убрать запятую после ] здесь

PHP:
  1.  ‘comment’ => [
  2.             ‘field_name’ => ‘Коментарий’,
  3.             ‘required’ => 1
  4.         ],

Удачи!

 

Спасибо, уже сам разобрался, но у меня новая проблема..

Ошибка:

PHP:
  1. Warning: Invalid argument supplied for foreach() in W:\domains\localhost\includes\functions.php on line 19

Код:

PHP:
  1. <?php
  2.  
  3. function debug($data) {
  4.     echo ‘<pre>’ . print_r($data, true) . ‘</pre>’;
  5. }
  6.  
  7.  
  8. function load($data) {
  9.     foreach ($_POST as $k => $v) {
  10.         if(array_key_exists($k, $data)) {
  11.             $data[$k] [‘value’] = trim($v);
  12.         }
  13.     }
  14.     return $data;
  15. }
  16.  
  17. function validate ($date) {
  18.     $errors = »;
  19.     foreach ($data as $k => $v){
  20.         if($date[$k][‘requiered’] && empty($data[$k][‘value’])) {
  21.             $errors .=«<li>Вы не заполнили поле! {$data[$k][‘field_name’]}</li>»;
  22.         }
  23.     }
  24.     return $errors;
  25. }
 

ну переводи….. ну думай сам хоть маленько ….
а то куча постов и все на элементарный синтаксис

 

Я пытаюсь, но ничего не помогает…
— Добавлено —

Я уже и скобку переносил, ничего не помогает
— Добавлено —
Проблему решил! Но не работает одна функция!
— Добавлено —
Надо было просто поставить
if (isset($data)) перед foreach.
Но у меня почему-то не работает валидация, даже без заглушки. Как это исправить?

data.php

PHP:
  1. <?php
  2.  
  3. $fields = [
  4.         ‘name’ => [
  5.                 ‘field_name’ => ‘Имя’,
  6.                 ‘requiered’ => 1
  7.         ],
  8.  
  9.         ‘phone’ => [
  10.             ‘field_name’ => ‘Номер телефона’,
  11.             ‘requiered’ => 0
  12.         ],
  13.        
  14.         ’email’ => [
  15.             ‘field_name’ => ‘Эл.Почта’,
  16.             ‘requiered’ => 1
  17.         ],
  18.        
  19.         ‘comment’ => [
  20.             ‘field_name’ => ‘Комментарий’,
  21.             ‘requiered’ => 1
  22.         ],
  23. ];

functions.php:

Код (Text):
  1. <?php
  2.  
  3. function debug($data) {
  4.     echo ‘<pre>’ . print_r($data, true) . ‘</pre>’;
  5. }
  6.  
  7.  
  8. function load($data) {
  9.     foreach ($_POST as $k => $v) {
  10.         if(array_key_exists($k, $data)) {
  11.             $data[$k] [‘value’] = trim($v);
  12.         }
  13.     }
  14.     return $data;
  15. }
  16.  
  17. function validate ($date) {
  18.     $errors=»»;
  19.     if (isset($data))
  20.     foreach ($data as $k => $v )
  21.     {
  22.         if($date[$k][‘requiered’] && empty($data[$k][‘value’])) {
  23.             $errors .=»<li>Вы не заполнили поле! {$data[$k][‘field_name’]}</li>»;
  24.         }
  25.     }
  26.     return $errors;
  27. }

Подключение:

PHP:
  1. <?php
  2.  
  3. require_once __DIR__ . ‘/includes/data.php’;
  4. require_once __DIR__ . ‘/includes/functions.php’;
  5.  
  6.  
  7. if(!empty($_POST)) {
  8.     debug($_POST);
  9.     $fields = load($fields);
  10.     debug($fields);
  11.     if($errors = validate($fields)){
  12.         debuf($errors);
  13.     } else {
  14.       echo ‘OK’;
  15.       //отправка
  16.     }
  17. }
  18. ?>
 

Это не ошибки, а кто-то юзает php 5, когда давно минималка 7.4
— Добавлено —

 

Ошибки:
1. При вызове функции load($data) передаётся в параметр $data передаётся массив $fields
В функции присваивается $data[$k][‘value’], oднако ключа ‘value’ в массиве нет.
2. При вызове функции validate ($date), далее обрабатывает $datа, которая не определена.

 

Всем спасибо, но я уже сам давно разобрался! )

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *