php Приращение имени переменной в цикле

Я думал о петле while, но не могу найти способ обойти это:

$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 строки снова и снова?

Для этого вам не нужны переменные переменные , а просто цикл 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 . Если вам это нужно, вам нужно будет использовать либо упомянутые переменные переменные, либо массив для сбора всех значений.

вы хорошо думаете в цикле while

Вы можете использовать:

  $conter = 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>"); } $conter++; } 

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

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

Вот несколько примеров строк.

Дайте знать, если у вас появятся вопросы.