- 实现std::map和std::unordered_map的foreach循环功能 - 实现std::array和std::vector的foreach循环功能 - 添加在foreach循环中删除容器元素的保护机制 - 添加标准容器类型的变量检查和类型验证 - 更新标准容器声明语法以支持键值类型参数 - 添加标准容器键值类型推断功能pull/1/head
parent
958a1aa2cb
commit
ea462010d1
6 changed files with 200 additions and 14 deletions
@ -0,0 +1,15 @@ |
|||||||
|
--TEST-- |
||||||
|
std array: foreach |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
function main() { |
||||||
|
$a = std::array(native_types::type_int, 5); |
||||||
|
foreach($a as $k => $item) { |
||||||
|
$a[$k] = random_int(1, 1000); |
||||||
|
} |
||||||
|
$count = array_sum($a); |
||||||
|
var_dump($count >= 5); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
bool(true) |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
--TEST-- |
||||||
|
std map: unset |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
function main() { |
||||||
|
$map = std::map(complex_types::type_string, native_types::type_int); |
||||||
|
$map["alpha"] = 10; |
||||||
|
$map["beta"] = 20; |
||||||
|
$map["gamma"] = 30; |
||||||
|
|
||||||
|
foreach ($map as $k => $v) { |
||||||
|
var_dump($k, $v); |
||||||
|
} |
||||||
|
unset($map["beta"]); |
||||||
|
echo "unset-------------\n"; |
||||||
|
foreach ($map as $k => $v) { |
||||||
|
var_dump($k, $v); |
||||||
|
} |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
string(5) "alpha" |
||||||
|
int(10) |
||||||
|
string(4) "beta" |
||||||
|
int(20) |
||||||
|
string(5) "gamma" |
||||||
|
int(30) |
||||||
|
unset------------- |
||||||
|
string(5) "alpha" |
||||||
|
int(10) |
||||||
|
string(5) "gamma" |
||||||
|
int(30) |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
--TEST-- |
||||||
|
std map: unset |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
function main() { |
||||||
|
$map = std::unordered_map(complex_types::type_string, native_types::type_int); |
||||||
|
$map["alpha"] = 10; |
||||||
|
$map["beta"] = 20; |
||||||
|
$map["gamma"] = 30; |
||||||
|
|
||||||
|
foreach ($map as $k => $v) { |
||||||
|
var_dump($k, $v); |
||||||
|
} |
||||||
|
unset($map["beta"]); |
||||||
|
echo "unset-------------\n"; |
||||||
|
foreach ($map as $k => $v) { |
||||||
|
var_dump($k, $v); |
||||||
|
} |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
string(5) "gamma" |
||||||
|
int(30) |
||||||
|
string(4) "beta" |
||||||
|
int(20) |
||||||
|
string(5) "alpha" |
||||||
|
int(10) |
||||||
|
unset------------- |
||||||
|
string(5) "gamma" |
||||||
|
int(30) |
||||||
|
string(5) "alpha" |
||||||
|
int(10) |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
--TEST-- |
||||||
|
std vector: foreach |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
use native_types; |
||||||
|
function main() { |
||||||
|
$a = std::vector(native_types::type_int); |
||||||
|
$n = 5; |
||||||
|
while($n--){ |
||||||
|
$a[] = random_int(1, 1000); |
||||||
|
} |
||||||
|
$count = array_sum($a); |
||||||
|
var_dump($count >= 5); |
||||||
|
$total = 0; |
||||||
|
foreach($a as $v){ |
||||||
|
$total += $v; |
||||||
|
} |
||||||
|
var_dump($total == $count); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
bool(true) |
||||||
|
bool(true) |
||||||
Loading…
Reference in new issue