- 比對array是否相同
- array clone
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);
}
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);
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);
[1] http://stackoverflow.com/questions/901815/php-compare-array
沒有留言:
張貼留言