【问题标题】:Setting value for data when field is blank字段为空时的数据设置值
【发布时间】:2011-12-12 05:09:24
【问题描述】:

我正在使用 simpleXML 解析 XML 文件以从以下数据属性中获取日期:

<start_time>2012-01-22 09:00:00</start_time>
<stop_time>2012-03-18 15:00:00</stop_time>

使用这个:

echo 'Start Date:'.substr("$events->start_time", 0, 10).'<br />';
echo 'End Date:'.substr("$events->stop_time", 0, 10).'<br />';

我的问题是,在某些条目上,没有给出 stop_time 值,并且在解析 xml 时,如果那里什么都没有,它会拉出 0000-00-00。简而言之,这意味着 start_timestop_time 在 xml 文件中发生这种情况的同一天。

我的问题: 对于没有为stop_time 指定值的条目,如何将start_time 设置为stop_time 值?

【问题讨论】:

  • 移动您的substr() 函数以设置变量,然后使用if 确定在echo 变量之前是否需要将起始值加倍?
  • if 是要走的路。谢啦。只是需要考虑一下。

标签: php xml parsing xml-parsing simplexml


【解决方案1】:

也许:

echo 'End Date:'.(isset($events->stop_time) ? substr($events->stop_time, 0, 10) : substr($events->start_time, 0, 10)).'<br />';

【讨论】:

    【解决方案2】:

    如果停止时间为 0000-00-00,您可以使用一个简单的三进制将输出替换为开始时间:

    echo 'Start Date:'.substr("$events->start_time", 0, 10).'<br />';
    echo 'End Date:'.$events->stop_time == "000-00-00" ? substr("$events->start_time", 0, 10) : substr("$events->stop_time", 0, 10).'<br />';
    

    【讨论】:

    • 另一个三元。另一个 ick。
    • 我个人认为三元语法很棒——简洁明了(假设你不使用嵌套的三元语句)。
    • 在我看来,如果很少使用它就会很有吸引力。它们可以工作,但很容易搞砸,而且在视觉上也不容易调试。请注意,您在该行缺少" 或额外的"
    • 您的解决方案看起来假设 000-00-00 的值已经存在。 XML 没有任何值,它的 stop_time 为空白,因此解析返回 000-00-00 只是为了填充它出现的内容。
    • 如果您的解析器没有设置停止时间的值,那么您可以使用 k102 给出的解决方案(即检查 isset($events->stop_time))
    【解决方案3】:

    因为解析没有为 stop_time 设置值,所以继续这样做:

    //End Date
    if ($enddate = substr("$events->stop_time", 0, 10)) {
        echo '<strong>End Date:</strong>'.substr("$events->stop_time", 0, 10).'<br />';
    } else {
        echo '<strong>End Date:</strong>'.substr("$events->start_time", 0, 10).'<br />';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-07
      • 2020-05-17
      • 1970-01-01
      • 2010-11-13
      • 2023-03-06
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      相关资源
      最近更新 更多