2012-06-21 4 views
0

Прежде чем я начну, я должен сообщить вам, что у меня мало опыта в PHP. Фактически, я в значительной степени только начал использовать его на прошлой неделе, поэтому я использую его, как если бы это был JavaScript или что-то еще.Массив, возвращающий 0 при вызове функции

В любом случае, я пытаюсь упорядочить динамическую подачу контента через PHP на моем веб-сайте, насколько это возможно, и насколько я знаю, как это сделать.

Итак, я делаю это с помощью:

  1. Создание массива каждой переменной URL, который я сейчас использую.
  2. Querying IDPage(), который включает цикл FOR, который циклически проходит через массив, сравнивает место индекса с текущей переменной URL и возвращает место индекса, если оно соответствует.
  3. Использование возвращаемой строки, чтобы решить, какой контент включать.

 

Пред- <! DOCTYPE >

<?php 
    $root = $_SERVER["DOCUMENT_ROOT"]; 
    $array_IDs = array("404", "home", "item2", "item3", "item4"); 
    global $root, $array_IDs; 
?> 

< голова >

<?php 
    function IDPage(){ 
     for ($i = 0; $i < count($array_IDs); $i++){ 
      if (isset($_GET[$array_IDs[$i]])){ 
       return $array_IDs[$i]; 
      } 
     } 
    } 
?> 

< тело >

<article> 
    <?php 
     $response = IDPage(); 

     if ($response == "404"){ 
      include($root . "/path/file.ext"); 
     } 

     if ($response == "home"){ 
      include($root . "/path/file.ext"); 
     } 

     if ($response == "item2"){ 
      include($root . "/path/file.ext"); 
     } 

     if ($response == "item3"){ 
      include($root . "/path/file.ext"); 
     } 

     if ($response == "item4"){ 
      include($root . "/path/file.ext"); 
     } 
    ?> 
</article> 

Используя текущий набор вверх, массив всегда возвращает 0, и с немного больше рытья, это, кажется, потому что считает, что count()$array_IDs не имеет значения. Тем не менее, это работает, если вы разместите петлю FOR в том же блоке, что и <body> (и модифицируйте код для работы с тем же блоком, конечно).

Опять же, я знаю, что это грубо, но это всего лишь небольшой сайт, я не знаю ничего лучше, и я не думаю, что я готов попасть в базы данных и все такое. Однако, если у кого-то есть лучшие идеи, не стесняйтесь, дайте мне знать, пока я способен. : L

ответ

1

Используйте global ключевое слово внутри функции, чтобы импортировать эту переменную в функции:

function IDPage(){ 
    global $array_IDs; 
    for ($i = 0; $i < count($array_IDs); $i++){ 
     if (isset($_GET[$array_IDs[$i]])){ 
      return $array_IDs[$i]; 
     } 
    } 
} 
+0

О, я вижу. Это мне не приходило, потому что, как я уже сказал, я использую его, как будто это JavaScript. Это здорово, спасибо @Blaster. :) – mythofechelon

+0

@BenHooper: Добро пожаловать – Blaster

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