【问题标题】:How can I replace empty elements in an array with "OTHER"?如何用“OTHER”替换数组中的空元素?
【发布时间】:2010-09-24 19:46:07
【问题描述】:

我的列表 (@degree) 是根据 SQL 命令构建的。 SQL 中的 NVL 命令不起作用,以下测试也不起作用:

if (@degree[$i] == "")
if (@degree[$i] == " ")
if (@degree[$i] == '')
if (@degree[$i] == -1)
if (@degree[$i] == 0)
if (@degree[$i] == ())
if (@degree[$i] == undef)

$i 是 for 循环中的计数器变量。基本上,它通过并从表中获取独特的度数并最终创建("AFA", "AS", "AAS", "", "BS")。列表并不总是这么长,空元素也不总是在那个位置 3。

谁能帮忙?

我想在 for 循环期间测试,或者在循环完成后测试这个空元素的位置,然后用单词“OTHER”替换它。

谢谢你的一切 -肯

【问题讨论】:

    标签: perl arrays list


    【解决方案1】:

    首先,数组中的第 i 个元素是 $degree[$i],而不是 @degree[$i]。其次,“==”用于数值比较——使用“eq”进行词法比较。第三,试试if (defined($degree[$i]))

    【讨论】:

    • 谢谢...是的,我知道它的 $degree[$i],我只是赶时间哈哈,而且 eq 工作得很好...我只是在自学 perl,我不能在任何地方都可以找到这个答案,非常感谢您
    【解决方案2】:

    如果它实际上在数据库中为空,请尝试COALESCE

    SELECT COALESCE(column, 'no value') AS column FROM whatever ...
    

    这是执行此操作的 SQL 标准方式。

    【讨论】:

      【解决方案3】:

      保罗所说的一切。而且,如果你需要一个例子:

      my @degree = ('AFA', 'AS', 'AAS', '', 'BS');
      
      $_ ||= 'OTHER' for @degree;
      
      print join ' ' => @degree;  # prints 'AFA AS AAS OTHER BS'
      

      【讨论】:

        猜你喜欢
        • 2017-06-13
        • 1970-01-01
        • 1970-01-01
        • 2013-07-04
        • 2019-10-14
        • 2011-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多