从数组中获取不重复的数字

时间:2015-10-15 16:30:17

标签: php

我遇到了解决一个问题的麻烦。

我有一个包含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解决这个问题?

谢谢

2 个答案:

答案 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);

?>