2016年7月5日 星期二

[PHP] array常用方法


  • 比對array是否相同
  •     function array_equal_values(array $a, array $b
                             $strict = false
                             $allow_duplicate_values = true) {
            
            $add = (int)!$allow_duplicate_values;

            if ($add and count($a) !== count($b)) {
                    return false;
            }

            $table = [];
            $count = function (array $array) use (&$table, $add, $strict) {
                $exit   = (bool)$table;
                $result = [];
                foreach ($array as $value) {
                    $key = array_search($value, $table, $strict);

                    if (false !== $key) {
                        if (!isset($result[$key])) {
                            $result[$key] = 1;
                        } else {
                            $result[$key] += $add;
                        }
                        continue;
                    }

                    if ($exit) {
                        break;
                    }

                    $key          = count($table);
                    $table[$key]  = $value;
                    $result[$key] = 1;
              }
              return $result;
        };
        return $count($a) == $count($b);
    }

    Usage :
    [T] array_equal_values(['2.0', '2', 2], ['2', '2.0', 2], true);                
    [T] array_equal_values(['2.0', '2', 2, 2], ['2', '2.0', 2], true);
    [F] array_equal_values(['2.0', '2', 2, 2], ['2', '2.0', 2], true, false);
    [T] array_equal_values(['2'], ['2'], true, false);                  
    [T] array_equal_values([2], ['2', 2],false, true);               

  • array clone
  • function array_clone($arr) {
        $newArray = array();
        foreach($arr as $key => $value) {
             if(is_array($value)) $newArray[$key] = array_clone($value);
             else if(is_object($value)) $newArray[$key] = clone $value;
             else $newArray[$key] = $value;
        }
        return $newArray;
    }

    Usage :
    $new_arr = array_clone($old_arr);
Reference
[1] http://stackoverflow.com/questions/901815/php-compare-array

沒有留言:

張貼留言