【问题标题】:Need to loop through an array to determine output需要遍历一个数组来确定输出
【发布时间】:2013-03-28 22:12:41
【问题描述】:

我想输出像这样的地址 123 Street, address, city, County, postcode

数据存储在数据库中,我需要检查该字段是否有任何内容,以便我知道在地址中输出逗号

$address = array($club['clubAdd1'], $club['clubAdd2'], $clubCity, $club['clubCounty'], $club['clubPostcode']);

【问题讨论】:

    标签: php arrays loops for-loop


    【解决方案1】:
    $parts = array(
    
      $club['clubAdd1'],
      $club['clubAdd2'],
      $clubCity,
      $club['clubCounty'],
      $club['clubPostcode'],
    
    );
    
    $address = array();
    
    foreach ($parts as $part)
    {
    
      if ('' != $part)
      {
        $address[] = $part;
      }
    
    }
    
    echo implode(', ', $address);
    

    编辑:一个班轮

      echo implode(', ', array_filter($array));
    

    编辑 2:更准确的一条线

    上面的问题是0'0' 也将被删除,这可能不是我们想要的行为。这将解决这个问题:

    array_filter($array, function ($value)
    {
      return strlen(trim($value));
    }
    );
    

    【讨论】:

    • 这很好,谢谢,但为什么我需要两个数组?这最终不会使用更多代码吗?
    • 嘿。还真没往下看。只需阅读他的评论并做出回应。对不起。
    • 关于“编辑 2”,好点,但不太可能因为 OP 指的是地址值。
    • 没错,但以防万一该方法用于相关的非地址情况。
    【解决方案2】:

    单线

    echo implode(', ', array_filter(array($club['clubAdd1'], $club['clubAdd2'], $clubCity, $club['clubCounty'], $club['clubPostcode'])))
    

    【讨论】:

      【解决方案3】:

      通过array_filter() 函数运行数组,不带第二个参数,将返回一个没有空元素的数组。

      例如:

      $address_line = implode(', ',array_filter($address_array));
      

      正如 Michael 所指出的,这也会删除数字 0 值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多