我不知道如何提高效率,并且正在努力应对编码挑战。有什么提示吗?
目的是在数组中返回唯一值。
function solution($A) {
foreach ($A as $key => $value) {
$searchResults = array_keys($A, $value);
//print "Total number of $value found in Array is: " . count($searchResults) . "\n";
$checkNumber = count($searchResults);
if ($checkNumber == 1) {
//print "Unique value is: $value\n";
return $value;
}
//print "\n";
}
}
我能想到的最简单的方法是,首先使用它array_count_values()
来计数每个值的出现次数,然后沿结果循环并返回出现1次的第一个项目。如果未找到,也会返回false。
function solution($a) {
$counts = array_count_values($a);
foreach ( $counts as $value => $count ) {
if ( $count == 1 ) {
return $value;
}
}
return false;
}
将array_count_values()
在整个数组将一次循环(其在所有情况下AFAIK来完成),在foreach
整个循环的结果将循环,直到项目被发现。
编辑:如果要使用对象作为数据,则可以通过序列化数据然后按照与上述相同的过程轻松解决此问题。使用unserialize()
返回的数据...
function solution($a) {
$ser = array_map("serialize", $a);
$counts = array_count_values($ser);
foreach ( $counts as $value => $count ) {
if ( $count == 1 ) {
return unserialize($value);
}
}
return false;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句