Альтернатива помещению включения в цикл - PullRequest
0 голосов
/ 06 января 2012

У меня есть кусок кода PHP, который я хотел бы включить на несколько разных страниц, но иметь возможность обновлять в одном месте (следовательно, я использую включаемый файл). Тем не менее, фрагмент кода должен появляться внутри цикла while - особенно внутри цикла while, который выводит строки MySQL.

Однако в запросе MySQL примерно 200 строк, которые я повторяю, поэтому включение в цикл действительно замедляет процесс. Я попытался сделать то, что находится во включаемом файле, функцией, как показано ниже, затем включить один раз в верхней части страницы и сослаться на функцию внутри цикла, но это, похоже, не работает (я просто не понимаю любые данные в переменных, которые я устанавливаю и т. д.)

Как можно поместить кусок кода в цикл без использования include?

Большое спасибо.

function CYCalc()
{


  // If the company's current fiscal quarter
  // is equal to the current calendar quarter,
  // use the company's fiscal years as calendar years

  if ($UniverseResult[CurQ] == "Q1" && $UniverseResult[CurYear] == "2012") {
    $C2011Sales =  number_format($UniverseResult[SalesYear2]/1000000,1); 
    $C2012Sales =  number_format($UniverseResult[SalesYear3]/1000000,1);
    $C2011EPS =  $UniverseResult[EPSYear2]; 
    $C2012EPS =  $UniverseResult[EPSYear3];
  }
}

1 Ответ

1 голос
/ 06 января 2012

Запомните правила определения объема PHP. Переменные, определенные в глобальной области видимости, не видны внутри функций, если вы явно не объявили их как глобальные в функции:

<?php

$x = 7;

function y() {
   echo $x; // undefined
}

function z() {
   global $x;
   echo $x; // 7
}

function a($x) {
   echo $x; // 7
}

Чтобы ваш CYCalc () работал, вам нужно объявить $UniverseResult global согласно z() выше или передать его в качестве параметра согласно a() выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...