Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql打印月份和表内容_Php_Arrays_Printing_Prepared Statement - Fatal编程技术网

php mysql打印月份和表内容

php mysql打印月份和表内容,php,arrays,printing,prepared-statement,Php,Arrays,Printing,Prepared Statement,我需要列一张打印月份的清单,以及他们是否有工资 首先,我用月份名称创建一个数组: $month_names = array("January","February","March","April","May","June","July","August","September","October","November","December"); 然后我有12个月的列:值1表示付费,值0表示未付费。所以我做了一个变量来知道它是否被支付: if ($row['month1'] == '1') {

我需要列一张打印月份的清单,以及他们是否有工资

首先,我用月份名称创建一个数组:

$month_names = array("January","February","March","April","May","June","July","August","September","October","November","December");
然后我有12个月的列:值1表示付费,值0表示未付费。所以我做了一个变量来知道它是否被支付:

if ($row['month1'] == '1') {
    $row['month1'] = 'Paid';
} else $row['month1'] = 'Non-Paid';
有更好的方法吗

该列表只有两列:“每月付款”和“状态”

而while或foreach应该是这样的:

echo '
    <li><a class="months">'$array[$month_names]=>$value'</a></li>
    <li><a class="status">'.$row['month1'].'</a></li>
    ';
echo'
  • “$array[$month\u names]=>$value”
  • “.$row['month1']”
  • ';
    我不太确定,我该怎么做


    谢谢大家!

    您正处于正确的轨道上,将您的逻辑与演示分开。这是一件好事。对于您的问题,您可以检查所有月份值,并将结果存储在另一个数组(我们称之为
    $paid
    )中,该数组按月份编号进行索引。然后使用
    $monthNames
    数组映射到
    $paid
    中的相应值。这将设置您在
    $monthNames
    数组中循环并创建HTML

    以下内容将满足您的需要:

    <?php
    
    $monthNames = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November","December");
    $paid = array(); //Placeholder for paid months.
    $row = $result->fetch_array();  //Assuming MySQLi API (you are using that or PDO...I hope...)
    
    for($i = 1; $i < 13; $i++) {
        $month = "month" . $i;
        if($row[$month] == 1) {
            $paid[] = "Paid";
        } else {
            $paid[] = "Not Paid";
        }
    }
    
    //Now make the HTML list
    
    print("<ul>\n");
    foreach($monthNames as $key => $month) {
        print('<li><a class="months">' . $month . '</a></li>' . "\n");
        print('<li><a class="status">' . $paid[$key] .'</a></li>' . "\n");
    }
    print("</ul>");
    
    ?>
    
    
    
    输出将沿以下线路(取决于DB数据):

    • 一月
    • 支付
    • 二月
    • 支付
    • 行军
    • 未付
    • 四月
    • 支付
    • 五月
    • 支付
    • 六月
    • 支付
    • 七月
    • 支付
    • 八月
    • 未付
    • 九月
    • 支付
    • 十月
    • 支付
    • 十一月
    • 未付
    • 十二月
    • 支付

    希望对你有所帮助

    如果我没弄错的话,你有这样一个数组:

    $rows = array(
        array('month' => 1, 'paid' => 0),
        array('month' => 2, 'paid' => 1),
        array('month' => 4, 'paid' => 0),
        array('month' => 5, 'paid' => 1),
        array('month' => 7, 'paid' => 1),
        array('month' => 8, 'paid' => 0),
    );
    
    <ul class="rows">
        <?php foreach ($rows as $month => $status): ?>
            <!-- We replace all non-numeric caracters in the key of the element and then sustract one to match the zero base index -->
            <li><a href="#" class="month"><?php echo $month_names[ preg_replace('/[^0-9]/', '', $month) - 1 ] ?></a></li>
            <li><a href="#" class="status"><?php echo $status ? 'Paid' : 'Non-Paid' ?></a></li>
        <?php endforeach ?>
    </ul>
    
    在这种情况下,你可以这样做

    <ul class="rows">
        <?php foreach ($rows as $row): ?>
            <li><a href="#" class="month"><?php echo $month_names[$row['month']] ?></a></li>
            <li><a href="#" class="status"><?php echo $row['paid'] ? 'Paid' : 'Non-Paid' ?></a></li>
        <?php endforeach ?>
    </ul>
    
    那么你应该这样做:

    $rows = array(
        array('month' => 1, 'paid' => 0),
        array('month' => 2, 'paid' => 1),
        array('month' => 4, 'paid' => 0),
        array('month' => 5, 'paid' => 1),
        array('month' => 7, 'paid' => 1),
        array('month' => 8, 'paid' => 0),
    );
    
    <ul class="rows">
        <?php foreach ($rows as $month => $status): ?>
            <!-- We replace all non-numeric caracters in the key of the element and then sustract one to match the zero base index -->
            <li><a href="#" class="month"><?php echo $month_names[ preg_replace('/[^0-9]/', '', $month) - 1 ] ?></a></li>
            <li><a href="#" class="status"><?php echo $status ? 'Paid' : 'Non-Paid' ?></a></li>
        <?php endforeach ?>
    </ul>
    

    Wow!谢谢ofc这很有帮助!:)嗯,使用printf和echo有什么区别吗?实际上,我使用echo是因为我知道,使用printf更好?@ChazyChaz
    print
    printf
    相比没有什么问题。如果有什么不同的话,
    printf
    函数在处理字符串中的变量时会更好,因为您可以更好地控制格式。对于带有一个或两个变量的基本字符串,
    print
    可以正常工作。好的,谢谢,我将更改用于打印的回显。谢谢你的提示:)@ChazyChaz没问题。值得一提的是,使用
    echo
    也没有任何问题,我只是更喜欢
    print
    printf
    my strings:)有关echo vs.print主题的更多信息,请参见本文。我可以自由添加更多带有$variables的列吗?如果语句选择了该表。