2016-04-12 3 views
-3

глядя на коде: как получить переменную в функции, вызываемом над нейКак получить переменную внутри

// section one 
CTitle(); 
//section two 
$title = 'Ben'; 

// section three 
function CTitle(){ 
    global $title; 
    echo 'I am: '.$title; 
} 

Как мы просто сделать его работу: порядок должен быть сохранен, не толкайте переменные вверх.

+1

место вашего 'CTitle()' в конце кода –

+3

Похоже, вы вызываете функцию CTitle() перед установкой $ название? Можете ли вы реорганизовать свою функцию и передать параметр $ title? – WillardSolutions

+1

* Настоящий * вопрос здесь: * Почему * заказ должен быть сохранен? Что в этом особенного? –

ответ

1

Вы можете использовать сеансы здесь, сохраняя при этом порядок (с несколькими дополнениями), если это вариант, вы иш в использовании и могут быть использованы в течение нескольких страниц, которые, как представляется, в данном случае после того, что вы написали в комментариях:

<?php 

session_start(); 

// section one 
CTitle(); 

//section two 
$title = 'Ben'; 

$_SESSION['var'] = $title; 

// section three 
function CTitle(){ 
    global $title; 

    $title = $_SESSION['var'] ; 

    echo 'I am: '.$title; 
} 

Комментарий существо:

«хороший вопрос Фред, порядок следует сохранить, потому что видеть: функция CTitle() {// название должна исходить изнутри страницы} // вы видите, и должна быть между головным тегом для реального - Ekumahost»

и проверка если сеанс устанавливается по всем ним.

I.e.:

<?php 

session_start(); 
if(isset($_SESSION['var'])){ 
// do something 
} 

EDIT:

По my original comment, поместите ваш CTitle(); в конце кода:

// section one 

//section two 
$title = 'Ben'; 

// section three 
function CTitle(){ 
    global $title; 
    echo 'I am: '.$title; 
} 

CTitle(); 
+0

, пожалуйста, мы не хотим использовать здесь сеанс ... Сессия будет потреблять ресурсы сервера – Ekumahost

+0

@Ekumahost oh? как так? –

+0

downvoter, если у вас есть что поделиться, сделайте. Это решение. –

4

Как мы просто сделать его работу: порядок должен быть сохранен, не толкайте переменную до

Мы не можем. Ваша переменная инициализируется после вы читаете ее значение. Из этого глупого требования не избежать. Вы не можете заставить его работать.

Определение функции до или после ее вызова не влияет на PHP, однако, прося, чтобы функция возвращала неинициализированные значения, как вы ожидаете, это как просить вас читать ваши мысли.

Однако

Вы можете взять некоторую помощь от объектно-ориентированного программирования, так как это не подпадает под строгим делать не политики

<?php 

$test=new CTitle(); 

class CTitle{ 
public static $title = 'Ben'; 
public function CTitle(){ 
    echo 'I am: '.self::$title; 
} 
} 

Fiddle

+1

[* or ... *] (http://stackoverflow.com/questions/36578665/how-to-get-the-variable-inside#comment60756407_36578665) –

+0

Да, это правда, но OP сказал * не нажимайте переменную вверх *, которая блокирует этот маршрут –

+0

Как вы сказали: * не может быть сделано * ;-) Не знаю, почему они не могут это изменить. –

0

В контексте HTML структуры, как Ваш комментарий ранее:

Нет hanky, вы собрали свой $ title из класса, который не является идеей , внесите его так: $ test = new CTitle(); public static $ title = 'Ben'; class CTitle {public function CTitle() {echo 'Я: ' .self :: $ title; }}

<?php 
$title = 'Ben'; 

function CTitle(){ 
    global $title; 
    echo 'I am: '.$title; 
} 
?> 
<html> 
    <head><title><?php CTitle(); ?></title></head> 
    <body> 
     <?php CTitle(); ?> 
    </body> 
</html> 
+0

не отличается от того, что [мой исходный комментарий] (http://stackoverflow.com/questions/36578665/how-to-get-the-variable-inside#comment60756407_36578665) сказал и добавил к моему ответу потом, где я мог бы добавить OP принят (до сих пор). Все, что вы сделали, это взять их код и включить его там. –

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