доступ к переменным вне функции - PullRequest
0 голосов
/ 27 октября 2011

если у меня есть такая функция:

function ($form, $db) {  
     $v = count($a);
}

function ($form, $db);

и этот код в том же файле

<script type="text/javascript">
$(document).ready(function() {
    for ($i=0; $i< <?php echo $v-1; ?>; $i++) {//here
}

как я могу получить доступ к переменной $v? я уже знаю, что глобальные переменные, как правило, плохая практика, так какова альтернатива?

спасибо

Ответы [ 6 ]

2 голосов
/ 27 октября 2011

Использование return $v:

function ($form, $db) {  
     $v = count($a);
     return $v;
}

<script type="text/javascript">
$(document).ready(function() {
    for ($i=0; $i< <?php echo function( $form , $db )-1; ?>; $i++) {//here
}
1 голос
/ 27 октября 2011

Используйте return для своей функции, чтобы установить значение $ v в глобальной области видимости.Тогда переменная будет доступна за пределами функции.

<?php
function ttt($form, $db)
{
    return count($db);
}
$v = ttt($form, $db);

Теперь $ v доступен через глобальную область.

Также обратите внимание, что переменные javascript не используют префикс $, поэтому$ Мне нужно было бы просто i ... если я не пропустил что-то там.

0 голосов
/ 27 октября 2011

Используйте класс для объявления ваших глобальных переменных, чтобы он мог дать им контекст

Пример:

class Config {
    public static $v;
}

тогда вы можете использовать Config :: $ v = count (a);

Это может быть полезно, если у вас есть несколько глобальных переменных, таких как некоторые параметры конфигурации, которые связаны друг с другом, и вам необходимо читать и записывать их во всем приложении.

Если это не случай и это только единичный случай, вам следует рассмотреть возможность использования возвращаемого значения.

0 голосов
/ 27 октября 2011

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

function counter($form, $db) {  
 $v = count($a);
 return $v;
}

и в файле скрипта вызовите функцию следующим образом

<script type="text/javascript">
$(document).ready(function() {
  for ($i=0; $i< <?php echo ($this->counter())-1; ?>; $i++) {//here
}

я надеюсьпомогает

0 голосов
/ 27 октября 2011

А как насчет базовых return?

function name($form, $db) {  
     $v = count($a);
     return $v;
}

$v = name($form, $db);
0 голосов
/ 27 октября 2011

Использовать глобальную переменную;просто дайте ему более описательное имя, чем $v, чтобы не было опасности его столкновения с чем-то другим.

...