2013-06-03 2 views
1

я думал о цикле в то время, но не могу найти способ обойти это:PHP имя Приращение переменной в цикле

$foo1 = get_post_meta($post->ID, '_item1', true); 
if (!empty($foo1)){ 
    echo ("<div class='$foo1'></div>"); 
} 

$foo2 = get_post_meta($post->ID, '_item2', true); 
if (!empty($foo2)){ 
    echo ("<div class='$foo2'></div>"); 
} 

И так далее ... сто раз, пока не достигнет $ foo100 и _item100 Любая идея достичь этого, чтобы не повторять эти 4 строки снова и снова?

ответ

2

Вам не нужно variable variables для этого, но только for цикла вроде этого:

for($i=1; $i<101; $i++) { 
    $klass = get_post_meta($post->ID, '_item' . $i, true); 
    if(!empty($klass)) { 
    echo "<div class='$klass'></div>"; 
    } 
} 

Это работает до тех пор, пока вы не нужны $fooX переменных позже. Если вам это нужно, вам нужно будет использовать либо упомянутые переменные переменные, либо массив для сбора всех значений.

+0

Ха спасибо! да, я усложнял переменные переменные. Я вернусь, когда получу больше репутации. – wakeweb

+0

@wakeweb Вы должны иметь возможность принять ответ уже. – Sirko

1

вы думаете хорошо на while петли

Вы могли бы использовать:

$counter = 1; 
    while ($counter< 100) // or whatever limit you have 
    { 
     $foo = get_post_meta($post->ID, '_item' . $counter , true); 
     if (!empty($foo)){ 
      echo ("<div class='$foo' . $counter .' ></div>"); 
       } 
    $counter++; 
    } 

Если скопировать этот код вы, вероятно, попасть в некоторые компиляции ошибок из-за конкатенации.

В принципе, вам нужно объединить строку «_item» с вашим текущим счетчиком $.

Here - некоторые примеры конкатенации строк.

Дайте мне знать, если возникнут какие-либо вопросы.

+0

Спасибо, Дэн Дину, будет выше, когда я получу больше репутации. – wakeweb

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