wil*_*amg 31 php arrays foreach loops
我正在尝试编写几行代码来制作不区分大小写的数组唯一类型函数.这是我到目前为止所拥有的:
foreach ($topics as $value) {
$lvalue = strtolower($value);
$uvalue = strtolower($value);
if (in_array($value, $topics) == FALSE || in_array($lvalue, $topics) == FALSE || in_array($uvalue, $topics) == FALSE) {
array_push($utopics, $value);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是if语句.我认为我的语法有问题,但我对PHP比较新,我不确定它是什么.有帮助吗?
Pen*_*m10 64
function array_iunique( $array ) {
return array_intersect_key(
$array,
array_unique( array_map( "strtolower", $array ) )
);
}
Run Code Online (Sandbox Code Playgroud)
你同时设置lvalue并uvalue以小写版本。
$uvalue = strtolower($value);
Run Code Online (Sandbox Code Playgroud)
应该
$uvalue = strtoupper($value);
Run Code Online (Sandbox Code Playgroud)
也就是说,这可能会更快一些。您的函数的性能将呈指数级下降,而这或多或少是线性的(猜测,不是comp-sci major ...)
<?php
function array_iunique($ar) {
$uniq = array();
foreach ($ar as $value)
$uniq[strtolower($value)] = $value;
return array_values($uniq);
}
?>
Run Code Online (Sandbox Code Playgroud)