需要使用while循环循环代码块

时间:2017-02-06 22:54:17

标签: php loops while-loop

内容来自一个查询,我不想手动生成一个冗长且重复的代码块,所以我认为如果我将第一个块放入while循环中它会很好用,但是没有什么好处来的

这是我到目前为止所得到的......

<?php
  $bloq_1 = array(1,2,3,4,5,7,8,9,10);
  $blnu_1 = '1';
  while( $bloq_1=$numeral_1) {
  echo $numeral_1="<article class=\"notxtras\">
    <a class=\"notxtras_url_cntn\" href=\"cdn.php?".$tema_s[$blnu_1++]['pltfrm']."=".$tema_s[$blnu_1++]['notid']."\" title=\"".$tema_s[$blnu_1++]['ttl']."\">
    <div class=\"notxtras_img_cntn\">
      <img src=\"http://cadenanoticias.mx/img/miniatura/".$tema_s[$blnu_1++]['pic1'] ."\" alt=\"".$tema_s[$blnu_1++]['rlcn'] ."\">
    </div>
    <h1 class=\"notxtras_ttl_cntn\">".$tema_s[$blnu_1++]['ttl']."</h1>
    <p class=\"notxtras_brv_cntn\">".$tema_s[$blnu_1++]['brv'] ."</p>
    <p class=\"notxtras_dsp_cntn\">Por:&nbsp;&nbsp;".$tema_s[$blnu_1++]['aut'] ." &bull; ".$tema_s[$blnu_1++]['cdd']." &bull; ".ucfirst(strftime("%A %e de %B del %Y",date(strtotime($tema_s[$blnu_1++]['fch'])))) ."</p>
    </a>
  </article>";
  }
?>

它可以吗?

2 个答案:

答案 0 :(得分:2)

我有三条建议/意见:

  1. 如果内容来自查询,那么使用foreach迭代实际查询结果(似乎存储在$tema_s中)可能会更好,而不是迭代超过一系列数字。我并不确切知道$tema_s是如何填充的,但如果它与我见过的大多数其他查询结果一样,如果您使用{{{}},则可能错过第0项1}}。如果您只是为了显示十个结果而执行此操作,那么在查询中添加[1,2,3,4,5,7,8,9,10]子句会更好,因此您将无法获取超出您需要的数据。

  2. 如果您发现自己回复了大量HTML,最好退出PHP以生成HTML,并且只需从PHP中回显您需要它们的值。这样可以避免因为错过所有引号而产生的烦恼,以及当你错过一个引号时会产生的混乱(在这种情况下不会说你有,但它很容易做到。)

  3. 没有为HTML输出正确转义任何变量。

  4. 根据这些想法调整代码将是这样的:

    LIMIT

    另外,正如您对问题的评论中所提到的,您应该考虑查看模板系统,例如twig。对于你在这里所做的事情来说,这似乎有些过分,但它会为你处理很多这样的事情。

答案 1 :(得分:0)

这应该有效:

func cropImage(image: UIImage, tileSize: Int) -> [UIImage]? {
        let hCount = Int(image.size.height) / tileSize
        let wCount = Int(image.size.width) / tileSize

        var tiles:[UIImage] = []

        for i in 0...hCount-1 {
            for p in 0...wCount-1 {
                let rect = CGRect(x: p*tileSize, y: i*tileSize, width: tileSize, height: tileSize)
                let temp:CGImage = image.cgImage!.cropping(to: rect)!
                tiles.append(UIImage(cgImage: temp))
            }
        }
        return tiles
    }