如何在 PHP 字符串中创建 while 循环?

Posted

技术标签:

【中文标题】如何在 PHP 字符串中创建 while 循环?【英文标题】:How do I create a while loop within a PHP string? 【发布时间】:2015-06-26 11:20:00 【问题描述】:

我正在使用简码终极灯箱创建查询。但这将在常规 php 页面中起作用的唯一方法是将数据保存为字符串。所以我需要做的是创建我的查询,但以某种方式在字符串中获取我的结果。

在我使用任何类型的 php 查询之前,以下是可行的:

 <?php     
 $my_tabs = "<ul class='easybuttons'>
 <li>[su_lightbox type='inline' src='#lightbox1']AT&amp;T[/su_lightbox]</li>
 <li>[su_lightbox type='inline' src='#lightbox2']Sprint[/su_lightbox]</li>
 <li>[su_lightbox type='inline' src='#lightbox3']T-Mobile[/su_lightbox]</li>
 </ul>";

 echo do_shortcode( $my_tabs );
 ?> 

但我需要 ATT、Sprint、T-Mobile 是动态的。请记住,短代码只有在字符串中才有效。

那么我怎样才能在这个字符串中做一个while循环呢?我尝试使用运算符但没有用。

$args = array('post_type' => 'services', 'category_name' =>  $childid, 'order_by' => 'the_title', 'order' => 'ASC');     

 query_posts($args);

// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) 
 $my_tabs .= '<ul class="easybuttons">'; 
 while ( $the_query->have_posts() )  
 $the_query->the_post();
 $my_tabs .= '<li>[su_lightbox type="inline" src="#lightbox1"]' . get_the_title() . '</li>';
 
$my_tabs .= '</ul>';

/* Restore original Post Data */
wp_reset_postdata();

  echo do_shortcode( $my_tabs );
 ?>

更新:

我尝试使用此代码,但它确实有效。什么都没有通过。我没有收到任何错误,但没有显示短代码。

 <?php 
  $args = array('post_type' => 'services', 'category_name' =>  $childid, 'order_by' => 'the_title', 'order' => 'ASC');   


 // The Query
  $the_query = new WP_Query( $args );

 // The Loop
 if ( $the_query->have_posts() ) 
  $lid = 1;
  $my_tabs .= '<ul class="easybuttons">'; 
  while ( $the_query->have_posts() )  
   $the_query->the_post();
   $my_tabs .= '<li>[su_lightbox type="inline" src="#lightbox' . $lid . '"]' . get_the_title() . '</li>';
   $lid++;
  
 $my_tabs .= '</ul>';
 

 echo do_shortcode( $my_tabs );
 wp_reset_postdata();   

【问题讨论】:

【参考方案1】:

您需要在某处初始化变量$my_tabs,例如在 if 块之外,并增加灯箱 ID。您无需致电query_posts()order_by 应该是 title,而不是 the_title。确保$childid 绝对是string of the category slug,不是名称,如果有疑问,请完全取出该参数,看看你是否得到任何东西,因为我认为这很可能是主要问题.

$args = array('post_type' => 'services', 'category_name' =>  $childid, 'order_by' => 'title', 'order' => 'ASC');

// The Query
$the_query = new WP_Query( $args );

$my_tabs = '';

// The Loop
if ( $the_query->have_posts() ) 
 $lid = 1;
 $my_tabs .= '<ul class="easybuttons">'; 
 while ( $the_query->have_posts() )  
  $the_query->the_post();
  $my_tabs .= '<li>[su_lightbox type="inline" src="#lightbox' . $lid . '"]' . get_the_title() . '</li>';
  $lid++;
 
$my_tabs .= '</ul>';

【讨论】:

是的,我愿意!这实际上是我的下一个挑战!我会试试这个! 这个新查询没有结果。嗯 @user2593040 查看我的更新答案。如果还是不行,试试 var_dump($the_query),看看结果如何 @user2593040 您是否尝试过从参数中删除'category_name' =&gt; $childid?如果是这样,你能发布那个vardump吗?查询中的某些内容导致未显示任何帖子,这是我的最佳猜测。

以上是关于如何在 PHP 字符串中创建 while 循环?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用多个 for 循环在 php 中创建 sql 语句

PHP MySQLi While 循环

如何在 C++ 中创建重复直到循环?

在useEffect中创建一个异步函数,并在函数的while循环中使用await,似乎不起作用

如何在C中创建连续循环,其中循环的每次迭代在其内部循环的每次迭代中发生一次

QT中想在子线程中创建对话窗口怎么建