TypePHP 编译器
https://swoole.com/aot/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
300 lines
5.6 KiB
300 lines
5.6 KiB
--TEST--
|
|
Universal method call: Array type methods
|
|
--FILE--
|
|
<?php
|
|
|
|
function _even_filter($v) { return $v % 2 == 0; }
|
|
|
|
function main()
|
|
{
|
|
// push / count / isEmpty
|
|
$arr = [];
|
|
var_dump($arr->isEmpty());
|
|
$arr->push(10);
|
|
$arr->push(20);
|
|
$arr->push(30);
|
|
var_dump($arr->count());
|
|
var_dump($arr->isEmpty());
|
|
|
|
// pop
|
|
$arr = [];
|
|
$arr->push(100);
|
|
$arr->push(200);
|
|
$arr->push(300);
|
|
var_dump($arr->pop());
|
|
var_dump($arr->count());
|
|
var_dump($arr->pop());
|
|
var_dump($arr->pop());
|
|
|
|
// get / set / del / keyExists
|
|
$arr = [];
|
|
$arr->set("name", "John");
|
|
$arr->set("age", 30);
|
|
var_dump($arr->get("name"));
|
|
var_dump($arr->get("age"));
|
|
var_dump($arr->keyExists("age"));
|
|
$arr->del("age");
|
|
var_dump($arr->keyExists("age"));
|
|
var_dump($arr->keyExists("name"));
|
|
|
|
// clean
|
|
$arr = [];
|
|
$arr->push(1);
|
|
$arr->push(2);
|
|
$arr->push(3);
|
|
$arr->clean();
|
|
var_dump($arr->isEmpty());
|
|
var_dump($arr->count());
|
|
|
|
// keyExists / contains
|
|
$arr = [];
|
|
$arr->push("apple");
|
|
$arr->push("banana");
|
|
$arr->push("cherry");
|
|
var_dump($arr->keyExists(0));
|
|
var_dump($arr->keyExists(5));
|
|
var_dump($arr->contains("banana"));
|
|
var_dump($arr->contains("grape"));
|
|
|
|
// search
|
|
$arr = [];
|
|
$arr->push("red");
|
|
$arr->push("green");
|
|
$arr->push("blue");
|
|
$arr->push("green");
|
|
var_dump($arr->search("green"));
|
|
var_dump($arr->search("yellow"));
|
|
|
|
// isList
|
|
$arr = [];
|
|
$arr->push("a");
|
|
$arr->push("b");
|
|
$arr->push("c");
|
|
var_dump($arr->isList());
|
|
$hash = [];
|
|
$hash->set("k", "v");
|
|
var_dump($hash->isList());
|
|
|
|
// keys / values
|
|
$arr = [];
|
|
$arr->set("x", 1);
|
|
$arr->set("y", 2);
|
|
$arr->set("z", 3);
|
|
$keys = $arr->keys();
|
|
var_dump($keys->count());
|
|
var_dump($keys->contains("x"));
|
|
var_dump($keys->contains("y"));
|
|
$vals = $arr->values();
|
|
var_dump($vals->contains(1));
|
|
var_dump($vals->contains(3));
|
|
|
|
// keyFirst / keyLast
|
|
var_dump($arr->keyFirst());
|
|
var_dump($arr->keyLast());
|
|
|
|
// join
|
|
$arr = [];
|
|
$arr->push("one");
|
|
$arr->push("two");
|
|
$arr->push("three");
|
|
var_dump($arr->join(", "));
|
|
|
|
// merge (mutating)
|
|
$arr1 = [];
|
|
$arr1->push("a");
|
|
$arr1->push("b");
|
|
$arr2 = [];
|
|
$arr2->push("c");
|
|
$arr2->push("d");
|
|
$arr1->merge($arr2);
|
|
var_dump($arr1->count());
|
|
var_dump($arr1->get(2));
|
|
|
|
// slice
|
|
$arr = [];
|
|
$arr->push("a");
|
|
$arr->push("b");
|
|
$arr->push("c");
|
|
$arr->push("d");
|
|
$arr->push("e");
|
|
$sliced = $arr->slice(1, 3);
|
|
var_dump($sliced->count());
|
|
var_dump($sliced->get(0));
|
|
$sliced2 = $arr->slice(-2);
|
|
var_dump($sliced2->count());
|
|
var_dump($sliced2->get(0));
|
|
|
|
// sort (mutating)
|
|
$arr = [];
|
|
$arr->push(3);
|
|
$arr->push(1);
|
|
$arr->push(4);
|
|
$arr->push(1);
|
|
$arr->push(5);
|
|
$arr->sort();
|
|
var_dump($arr->get(0));
|
|
var_dump($arr->get(1));
|
|
var_dump($arr->get(4));
|
|
|
|
// reverse
|
|
$arr = [];
|
|
$arr->push(1);
|
|
$arr->push(2);
|
|
$arr->push(3);
|
|
$reversed = $arr->reverse();
|
|
var_dump($reversed->get(0));
|
|
var_dump($reversed->get(2));
|
|
|
|
// unique
|
|
$arr = [];
|
|
$arr->push("a");
|
|
$arr->push("b");
|
|
$arr->push("a");
|
|
$arr->push("c");
|
|
$unique = $arr->unique();
|
|
var_dump($unique->count());
|
|
|
|
// flip
|
|
$arr = [];
|
|
$arr->set("a", 1);
|
|
$arr->set("b", 2);
|
|
$flipped = $arr->flip();
|
|
var_dump($flipped->keyExists(1));
|
|
|
|
// sum / product
|
|
$arr = [];
|
|
$arr->push(2);
|
|
$arr->push(4);
|
|
$arr->push(6);
|
|
var_dump($arr->sum());
|
|
var_dump($arr->product());
|
|
|
|
// chunk
|
|
$arr = [];
|
|
$arr->push(1);
|
|
$arr->push(2);
|
|
$arr->push(3);
|
|
$arr->push(4);
|
|
$arr->push(5);
|
|
$chunks = $arr->chunk(2);
|
|
var_dump($chunks->count());
|
|
|
|
// diff
|
|
$a = [];
|
|
$a->push("green");
|
|
$a->push("red");
|
|
$a->push("blue");
|
|
$b = [];
|
|
$b->push("green");
|
|
$b->push("yellow");
|
|
$diff = $a->diff($b);
|
|
var_dump($diff->count());
|
|
var_dump($diff->contains("red"));
|
|
var_dump($diff->contains("blue"));
|
|
|
|
// filter
|
|
$arr = [];
|
|
$arr->push(1);
|
|
$arr->push(2);
|
|
$arr->push(3);
|
|
$arr->push(4);
|
|
$evens = $arr->filter('_even_filter');
|
|
var_dump($evens->count());
|
|
var_dump($evens->get(1));
|
|
|
|
// values
|
|
$arr = [];
|
|
$arr->set("x", 10);
|
|
$arr->set("y", 20);
|
|
$vals2 = $arr->values();
|
|
var_dump($vals2->count());
|
|
var_dump($vals2->get(0));
|
|
var_dump($vals2->get(1));
|
|
|
|
// replace
|
|
$base = [];
|
|
$base->push("orange");
|
|
$base->push("banana");
|
|
$base->push("apple");
|
|
$repl = [];
|
|
$repl->push("pineapple");
|
|
$result = $base->replace($repl);
|
|
var_dump($result->get(0));
|
|
|
|
// jsonEncode
|
|
$arr = [];
|
|
$arr->set("name", "test");
|
|
$arr->set("value", 123);
|
|
var_dump($arr->jsonEncode());
|
|
|
|
// toInt / toFloat / toBool / toString
|
|
$arr = [];
|
|
$arr->push(1);
|
|
var_dump($arr->toInt());
|
|
var_dump($arr->toFloat());
|
|
var_dump($arr->toBool());
|
|
|
|
echo "done\n";
|
|
}
|
|
?>
|
|
--EXPECT--
|
|
bool(true)
|
|
int(3)
|
|
bool(false)
|
|
int(300)
|
|
int(2)
|
|
int(200)
|
|
int(100)
|
|
string(4) "John"
|
|
int(30)
|
|
bool(true)
|
|
bool(false)
|
|
bool(true)
|
|
bool(true)
|
|
int(0)
|
|
bool(true)
|
|
bool(false)
|
|
bool(true)
|
|
bool(false)
|
|
int(1)
|
|
bool(false)
|
|
bool(true)
|
|
bool(false)
|
|
int(3)
|
|
bool(true)
|
|
bool(true)
|
|
bool(true)
|
|
bool(true)
|
|
string(1) "x"
|
|
string(1) "z"
|
|
string(15) "one, two, three"
|
|
int(2)
|
|
NULL
|
|
int(3)
|
|
string(1) "b"
|
|
int(2)
|
|
string(1) "d"
|
|
int(1)
|
|
int(1)
|
|
int(5)
|
|
int(3)
|
|
int(1)
|
|
int(3)
|
|
bool(true)
|
|
int(12)
|
|
int(48)
|
|
int(3)
|
|
int(2)
|
|
bool(true)
|
|
bool(true)
|
|
int(2)
|
|
int(2)
|
|
int(2)
|
|
int(10)
|
|
int(20)
|
|
string(9) "pineapple"
|
|
string(27) "{"name":"test","value":123}"
|
|
int(1)
|
|
float(1)
|
|
bool(true)
|
|
done
|