我遇到了解决一个问题的麻烦。
我有一个包含0到555之间数字的数组。
sentence= input("Enter a sentence")
keyword= input("Input a keyword from the sentence")
words = sentence.split(' ')
if keyword in words:
pos = words.index(keyword)
pos = 0+1
print(pos)
我需要一个只返回那些不包含相同数字的数字的函数。
所以,这些数字不会作为回报
11 - 因为' 1'正在重复 255 - 因为255正在重复......所以..我应该如何通过php解决这个问题?
谢谢
答案 0 :(得分:1)
如果你把数字看作一个字符串,这实际上很简单。您可以使用的函数是count_chars,它计算字符串中字符的出现次数:
$array = array(0, 1, 2, 3, 4, 11, 255, 555);
$result = array_filter($array, function ($number) {
$containsUniqueNumbers = true;
foreach (count_chars(strval($number), 1) as $count) {
// If any of the characters in the string occurs more than once:
if ($count > 1) {
$containsUniqueNumbers = false;
break;
}
}
return $containsUniqueNumbers;
});
变量$result
现在将包含array(0, 1, 2, 3, 4)
。
答案 1 :(得分:1)
尝试这一点,我做的是,Foreach值,将值转换为数组,然后对于该特定数组,使用array_unique()
函数删除重复的条目,在此步骤中,如果有重复的条目然后输出的大小将小于原始字符串,因此我们可以使用sizeof函数来检查大小,如果它们不相等,那么我们可以从数组中删除该值。
<?php
$sample = array(0, 1, 2, 3, 4... 555);
foreach ($sample as $key => $value) {
if ($value > 9){
//Do this for value more than 2 digits
$original = str_split($value);
$check = array_unique($original);
if(sizeof($check)!= $original){
//Remove the value
unset($sample[$key]);
}
}
}
print_r($sample);
?>