php多个foreach循环

时间:2012-10-24 10:55:46

标签: php wordpress

你好我在wordpress中创建一个php脚本来生成一个动态的html表,从数据库中获取数据,

这个功能是这样的:

1)主题 2)主题 3)项目

对于每个[主题],有[主题],每个[主题]有多个[项目]

我想显示每个[主题]作为新行,并在其下显示[项目]

这是我的功能无法帮助我纠正我的代码。

function dynamic_table($attr) {

global $wpdb;

$ThemeCode = $attr['theme'];
$Themes = getThemeinfo($ThemeCode);
$sr = 1;

$dt_list = $wpdb->get_results("SELECT * FROM wp_mtresources WHERE ThemeCode= '$ThemeCode'");
if(!empty($dt_list)) {
    echo '<h2>' . $Themes['Desc'] . '</h2>
        <table style="margin: auto; margin-bottom: 30px;" border="0" cellspacing="0" cellpadding="0">
        <tbody>
            <tr>
                <th>Topic</th>
                <th>Presenation</th>
                <th>Worksheets</th>
                <th>Other Resources</th>
            </tr>
            ';
    foreach ($dt_list as $dt) {
        $tp_list = $wpdb->get_results("SELECT * FROM wp_mtresources WHERE TopicCode= '$dt->TopicCode'");

        $Topics = getTopicsinfo($dt->ThemeCode, $dt->TopicCode);    
            echo '  
                <tr>
                    <td colspan="4" style="text-align:center;"><a href=""> ' . $Topics['TopicDesc'] . ' </a></td>
                </tr>';
            foreach ($tp_list as $tp) {

                echo '
                    <tr>
                        <td>' . $tp->ResourceLocation.'</td>    
                        <td></td>   
                        <td></td>   
                        <td></td>   
                    </tr>       
                ';

            }
    }   
        echo '</tbody>
              </table>';    
} else {
    return 'No Theme or Topic found.';
}   


 }
 add_shortcode('dt', 'dynamic_table');

这是意想不到的结果 Screenshot

2 个答案:

答案 0 :(得分:2)

首先,我会从您的数据库中选择

PDO example..
while($rows = $query->fetch(PDO:FETCH_ASSOC)){
  $data = $rows;
}

现在一切都在$ data数组中,表名为key。

保留其他数组中的任何其他数据

$another_array = ['example', 'example'];&lt; - 只是一个例子可能是上面的另一个数据库检索,不管是另一个数据数组!

然后对于每个循环,其中一个数组但访问该循环中的其他数组..

$array1 = ['one', 'two', 'three'];
$array2 = ['a', 'b', 'c'];

foreach($array1 as $k => $v){
     echo $v.' - '.$array2[$k];
}

结果看起来像..

  一个 - 一个   2 - b   三 - c

很抱歉,如果这还不够清楚!

答案 1 :(得分:0)

在我的一个实例中,我确实喜欢这个

$i=0;
$count=10;
echo count($_POST['dates']);echo'<br>';
while($i<10 )
{
$date = ($_POST['dates'][$i]) ;
$fee = ($_POST['fee'][$i]);
echo "The value of  is".$date .'-------'.$fee;
echo'<br>';
$i=$i+1;
} 

and it gave answer like 
The value of is2017-02-28-------800
The value of is2017-02-21-------1000
The value of is2017-02-13-------200