2014-11-19 3 views
1

Я думаю, что у меня есть простые вопросы, но я не могу найти то, что искал!Как напечатать массив определенных констант?

Я массив, где есть некоторые строки:

$tipus_membre = array("lider","colider","vetera","membre"); 

и это строки определены:

define("LIDER","Leader"); 
define("COLIDER","Co-leader"); 
define("VETERA","Elder"); 
define("MEMBRE","Member"); 

Я пытаюсь напечатать в форме, но я не в состоянии возьми. При этом первом варианте я получаю только название "ЛИДЕР", "colider" ....:

<select name="cla_tipus" required> 
<?php 
for($i=0;$i<count($tipus_clan);$i++){ 
    echo '<option value="'.$i.'">'.$tipus_membre[$i].'</option>'; 
} 
?> 
</select> 

и если я поставил:
константы ($ tipus_clan [$ я]);

Я ничего не получаю.

(редактировал $ вар)

+1

Я могу ошибаться, но я считаю, 'define' по умолчанию в случае чувствительных. http://php.net/manual/en/function.define.php ... – DinoOcch

+1

отлично работает, если вы измените массив на ваш цикл на правильное имя var, которое является '$ tipus_membre' – gwillie

+1

Это то, что вы хотите ??? http://codepad.viper-7.com/84ql9F – MixedVeg

ответ

0

Спасибо всем за быстрый ответ, наконец, проблема была в том, что вы сказали, в случае с регистром.

код теперь работает с незначительным изменением, и это:

<?php 
for($i=0;$i<count($tipus_clan);$i++){ 
    echo '<option value="'.$i.'">'.constant(strtoupper($tipus_membre[$i])).'</option>'; 
} 
?> 
1

Константы чувствительны к регистру, может попробовать сделать свой массив все заглавные буквы, вы можете использовать

strtoupper() 

функцию капитализировать

+0

Я добавил strtoupper() к функции constant() и теперь работает хорошо! – etrull

+0

рад, что это помогло! –

3

Это должно работать для вас :

<?php 

    define("LIDER", "Leader"); 
    define("COLIDER", "Co-leader"); 
    define("VETERA", "Elder"); 
    define("MEMBRE", "Member"); 

    $tipus_membre = array(LIDER, COLIDER, VETERA, MEMBRE); 

?> 

<select name="cla_tipus" required> 
    <?php 

     foreach($tipus_membre as $k => $v) 
      echo "<option value='" . $v . "'>" . $tipus_membre[$k] . "</option>"; 
    ?> 
</select> 
2

Несколько вопросов с кодом

for($i=0;$i<count($tipus_clan);$i++){ 
    echo '<option value="'.$i.'">'.$tipus_clan[$i].'</option>'; 
} 

Вы фактически определяете $ tipus_membre выше, а затем используете цикл $ tipus_clan в цикле for ... который не существует. Измените приведенное выше на

for($i=0;$i<count($tipus_membre);$i++){ 
    echo '<option value="'.$i.'">'.$tipus_membre[$i].'</option>'; 
} 

Кроме того, constant() чувствителен к регистру; Вам нужно определить все в $ tipus_membre в верхнем регистре (или преобразовать их в верхний регистр при вызове константы()) для определенных констант, которые нужно захватить, иначе вы получите неопределенное предупреждение.

+3

Я считаю, что вы также можете использовать 'define (" LIDER "," Leader ", true)', чтобы константа была нечувствительной к регистру. :) – DinoOcch

+0

Вызов другой $ var был ошибкой копирования. Наконец, я решил с помощью: constant (strtoupper ($ tipus_membre [$ i])) – etrull

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