2016-11-23 1 views
0

Я пытался получить доступ к локальной переменной внутри глобальной области. Я пробовал метод global $var, но это не работает. Переменная, к которой я пытаюсь получить доступ, - это переменная $word1Txt. Вот мой код:Как получить доступ к локальной переменной в глобальной области PHP?

HTML:

<form class="form-inline" method="post"> 
         <input class="form-control" type="text" placeholder="First Word" name="word1" autofocus> 
         <input class="form-control" type="text" placeholder="Second Word" name="word2" autofocus> 
         <input class="btn btn-primary form-submit" type="submit" value="Compare"> 
        </form> 

PHP:

<?php 
      require('./wordnik/Swagger.php'); 
      $APIKey = '342eac9900e703079b0050d5f7008eab962195189e75bfbcb'; 
      $client = new APIClient($APIKey, 'http://api.wordnik.com/v4'); 

      if (!empty($_POST['word1'])) { 
       $word1 = $_POST['word1']; 
       $wordApi = new WordApi($client); 
       $word1 = $wordApi->getDefinitions($word1, null, null, 1); 
       global $word1Txt; 
       global $word10; 
       $word1Txt = $_POST['word1']; 
       $word10 = $word1[0]->text; 
      } 
      if (!empty($_POST['word2'])) { 
       $word2 = $_POST['word2']; 
       $wordApi = new WordApi($client); 
       $word2 = $wordApi->getDefinitions($word2, null, null, 1); 
       global $word2Txt; 
       global $word20; 
       $word2Txt = $_POST['word2']; 
       $word20 = $word2[0]->text; 
      } 
      print $word1Txt; 
     ?> 

JS:

$(document).ready(function() { 
       var word1Txt = <?php echo $word1Txt; ?>; 
       var word2Txt = <?php echo $word2Txt; ?>; 

       $('div.word1').prepend("<h3 class='header'>hi" + word1Txt + "</h3>"); 
       $('div.word2').prepend("<h3 class='header'>hi" + word2Txt + "</h3>"); 
      }); 

EDIT: Я попытался добавления var_dump ($ _ POST); перед заявлениями. Я получаю следующий вывод.

array(2) { ["word1"]=> string(2) "hi" ["word2"]=> string(2) "no" } 

Fatal error: Uncaught Exception: Unauthorized API request to 
http://api.wordnik.com/v4/word.json/hi/definitions?limit=1: 
unauthorized in 
C:\xampp\htdocs\DictionaryCompare\wordnik\Swagger.php:111 Stack trace: 
#0 C:\xampp\htdocs\DictionaryCompare\wordnik\WordApi.php(176): APIClient->callAPI('/word.json/hi/d...', 'GET', Array, NULL, Array) #1 
C:\xampp\htdocs\DictionaryCompare\index.php(40): 
WordApi->getDefinitions('hi', NULL, NULL, 1) #2 {main} thrown in 
C:\xampp\htdocs\DictionaryCompare\wordnik\Swagger.php on line 111 
+0

не уверен, в чем проблема - какой var вы пытаетесь получить и где? – WEBjuju

+0

@WEBjuju Извините. Я редактировал свой вопрос. Дайте мне знать, если вам нужно больше info :) – Njinx

+0

Не похоже, что вам нужен глобальный код с этим кодом. В том, что вы здесь включили, есть только одна область. –

ответ

1

Я не знаю, есть ли у вас правильные значения в вашем $_POST или нет, но это отметить, чтобы сделать с областью, поскольку, как вы видите, это работает!

$_POST['word1'] = 'word1'; 
$_POST['word2'] = 'word2'; 
var_dump($_POST); // here you make sure you have posted right values 

// array(2) { ["word1"]=> string(5) "word1" ["word2"]=> string(5) "word2" } <---- this should have values 

      if (!empty($_POST['word1'])) { 
       $word1 = $_POST['word1']; 

       global $word1Txt; 
       global $word10; 
       $word1Txt = $_POST['word1']; 
       $word10 = $word1[0]->text; 
      } 
      if (!empty($_POST['word2'])) { 
       $word2 = $_POST['word2']; 
       global $word2Txt; 
       global $word20; 
       $word2Txt = $_POST['word2']; 
       $word20 = $word2[0]->text; 
      } 
      print $word1Txt; 
     ?> 

Поэтому убедитесь, что у вас есть правильные значения в $_POST с помощью var_dump($_POST) непосредственно перед IF заявления.

Обновление: здесь мы находимся, вы пропустили атрибут action :)!

<form class="form-inline" method="post" action="result.php"> 
          <input class="form-control" type="text" placeholder="First Word" name="word1" autofocus> 
          <input class="form-control" type="text" placeholder="Second Word" name="word2" autofocus> 
          <input class="btn btn-primary form-submit" type="submit" value="Compare"> 
         </form> 
+0

Прошу прощения, но я очень новичок в PHP и не совсем понимаю, что вы хотите от меня сделать? – Njinx

+0

Я предполагаю, что $ _POST ['word1'] и $ _POST ['word2'] оба пустые, поэтому у вас нет значения в $ word1Txt –

+0

Извините, я загружу полный код. У меня есть HTML-форма, которая отправляет данные на этот пост. Я уверен, что работает. – Njinx

0

Существует глобальная переменная (простите за каламбур) под названием $GLOBALS. См. Официальный PHP manual.

// in the middle of some context 
$GLOBALS['foo'] = 'some text'; 
// in another context and scope, in the same run 
echo $GLOBALS['foo']; 
// echoes `some text` 

 Смежные вопросы

  • Нет связанных вопросов^_^