PHP字符串比较

时间:2014-03-22 07:20:55

标签: php behat strcmp

我在Behat Mink中使用以下PHP函数来检查Email列值是按升序还是降序。但问题是它总是失败。我只想检查所有行中的主题或From of Email列是按升序和降序排列。还有其他办法吗?

public function ValidateColumnSorting($Column, $order) {
    $nodes = // Logic goes to retrieve all rows subject or from column value

    if (strcasecmp($order, "asc") == 0) 
    {
        for ($i = 1; $i < $sizeof($nodes); $i++) 
         {
            if (strcasecmp($nodes[$i], $nodes[$i - 1]) >= 0)
            {
                print_r("Row " . $i - 1 . " val is " . $nodes[$i - 1]);
            } 
            else if (strcasecmp($nodes[$i], $nodes[$i - 1]) < 0) 
             {
                throw new Exception($Column . " column ascending sort order failed.".$nodes[$i] . " is less than " . $nodes[$i - 1]);
             }
         }
      } 
      else 
      {
            for ($i = 1; $i < $sizeof($nodes); $i++) 
            {
                print_r($Column . " column row " . $i . " value is " . $nodes[$i]);

                if (strcasecmp($nodes[$i], (string) $nodes[$i - 1]) <= 0) {
                    print_r($Column . " of Email is same");
                } else if (strcasecmp($nodes[$i], $nodes[$i - 1]) > 0) {
                    throw new Exception($Column . " column descending sort order failed." . $nodes[$i] . " is greater than " . $nodes[$i - 1]);

                }
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

您可以直接按升序或降序对其进行排序,而不是检查其顺序。 将主题或电子邮件数组传递给sort()函数

$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);

它将返回已排序的数组

fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange

您无需手动执行此操作。 在这里阅读更多http://in2.php.net/sort

答案 1 :(得分:0)

不考虑是否有更适合的方式来验证元素的顺序,您的代码可能会因$sizeof($nodes)而失败,请尝试sizeof($nodes)

在Behat中,我将采用的方法是创建一个可以在别处重复使用的通用步骤定义......

Then I should see the "css_to_some_elements" ordered as:
| apple  |
| banana |
| lemon  |