php多维数组compare

上一篇 / 下一篇  2011-04-07 18:07:00 / 个人分类:自动化测试

最近,在帮其它部门做一个API的比对。之前用的是SQL,现在想迁移到Mysql。但需要测试两边的返回值是否一致。
开发提供的web展现格式是php数组。刚开始想到的是直接遍历。后来发现file_get_contents后的类型为string.还需要转换为php array.


思路:
1. 将 url放入文件url中。 但不包含域名,因为域名需要作为参数。
2. 然后逐行读取并用file_get_contents获取每行的string.
3. 获取后将之转化为php array。
4. 将主键按id进行重组。
5. 然后将sql和Mysql的都转化成php array.


$file_handle = file("url");  ## 将 url放入文件url中

foreach($file_handle as &$li) {  #遍历url里边的每行

   $line = "http://config.dangdang.com/$li";  #拼接
   $sql= "http://config.dangdang.sqlserver/$li"; #拼接
   $a=file_get_contents($line);           #获取string
   $A=file_get_contents($sql);
   #  echo $line;
   #  echo $sql;
   eval('$b='.$a.';');       #转化为php array。

   foreach($b['c2c_shop_policy'] as $r){   #找到主键为c2c_shop_policy
      $c[$r['id']]=$r;   #将主键按id进行重组
   }
#################################sqlserver###############
   eval('$B='.$A.';');
   foreach($B['c2c_shop_policy'] as $R){
    $C[$R['id']]=$R;
   }
   echo "The $q url is $line \n";
  $q=$q+1;
  compare($c,$C);
  $c=array("");
  $C=array("");

################
6. compare进行递归比较验证。

compare函数  #对php 数组进行递归比较。
#!/usr/local/php/bin/php
<?php


$a = array( 123 => array ( "name"  => "zhang",
                            "age"  => 30,
                            "text" => "hello"
                           ),
        456 => array ( "name"  => "zhang",
                        "age"  => 30,
                        "text" => "hello"
                       ),
    );

$b = array( 123 => array ( "name"  => "zhang",
                            "age"  => 30,
                            "text" => "mhello"
                           ),
            456 => array ( "name"  => "zhang",
                        "age"  => 30,
                        "text" => "hello"
                        )
     );



compare($a,$b);  #验证$a的键是否存在于$b.
compare($b,$a);  #验证$b的键是否存在于$a.



function compare($aa,$bb) {
    
    foreach ($aa as $k => $v) {
        if (isset($bb[$k])) {
            if ( is_array($v) ) {
                compare($v,$bb[$k]);
            }
            else {
                ### 简单值比较
                if ($bb[$k] == $v ) {
                    echo "ok.. $k\n";
                }
                else {
                    echo "diff value in site (key:$k, value:$v)\n";
                }
            }
        }
        else {
            echo "Doesn't exist in site B (id:$k)\n";
        }
    }

}

 

TAG:

 

评分:0

我来说两句

Open Toolbar