Profil detayı eklendi, herkes profillerine girip bir gözatsın! Sevdiğiniz üyelerin cevaplarını takip edin! Tüm güncellemeler

Faydalı bir kombinasyon fonksiyonu... Ancak bir ayarı düzeltmem lazım.

Arkadaşlar yabancı bir kaynaktan bulduğum aşağıdaki 4 fonksiyon, size girdiğiniz değerlerin istediğiniz basamaklı değerlerini sıralayıp geri veriyor ve bunu yaparken de aynı değerleri geri vermiyor yani ikili bir kombinasyonda (2,3) verdiyse (3,2) vermiyor tekrar. ve bunları bir dizi yapıp sıralıyor. Gayet kullanışlı.


örnek: $fonk= unique_string(2, [1,2,3]);
       print_r($fonk);

örnek çıktı: Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 22 [4] => 23 [5] => 33 )

Ancak ben bu fonksiyonlardan aldığım bu sonuçları bu aşamadan sonra toplayıp bana vermesini istiyorum. Yani:

Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 4 [4] => 5 [5] => 6 ) şeklinde.

FONKSİYONLAR:


function create_all_array($placeholder, array $values)
{
    if ($placeholder <= 0) {
        return [];
    }


    $stack = [];
    $values = array_unique($values);


    foreach ($values as $value) {
        $stack[] = [
            'first' => $value,
		
            'childs' => create_all_array($placeholder - 1, $values)
        ];
    }


    return $stack;
}

function string($values, $prefix = '')
{
    $stack = [];


    foreach($values as $value) {
        $sub_prefix = $prefix . $value['first'];


        if (empty($value['childs'])) {
            $stack[$sub_prefix] = (int)$sub_prefix;
        } else {
            $stack = array_merge($stack, string($value['childs'], $sub_prefix));
        }
    }


    return $stack;
}

function has_duplicate($string, $items)
{
    $explode = str_split ($string);
    foreach($items as $item) {
        $item_explode = str_split($item);


        sort($explode);
        $string = implode('',$explode);
        sort($item_explode);
        $item = implode($item_explode);


        if ($string == $item) {
            return true;
        }
    }


    return false;
}


function unique_string($placeholder, array $values)
{
    $stack = string(create_all_array($placeholder, $values));


    $check_stack = [];
    foreach($stack as $key => $item) {
        if (has_duplicate($item, $check_stack)) {
            unset($stack[$key]);
        }
        $check_stack[] = $item;
    }
	sort($stack);
    return $stack;
}
0
Bu soru için henüz cevap yazılmamış, ilk cevabı sen yaz!
İşlem devam ediyor, lütfen bekleyin..

Cevap yaz Sadece sorunun cevabını yazın

Yabancı Dizi Arşivi