0 oy
Php kategorisinde (120 puan) tarafından soruldu
Aşağıdaki kodda yapmak istediğim şey şu: Fonksiyon, kafamdakidizi13 dizisinde eğer 13 toplamına rastlarsa o toplamın kaynağını bir daha işleme sokmasın.

Aşağıda beş basamaklı bir sayının farklı basamaklarının birbirleriyle farklı toplam ihtimalleri sıralı. (Mesela $toplam12 değişkeni birinci ve ikinci basamağın toplamı anlamına geliyor.)

------------------------------------

1- Ben istiyorum ki 13 sayısını bulduysam bu ihtimallerden birinde, bunun çıktısını yazdırayım.

2- Ancak bu çıktıyı veren basamakları bir daha çıktı vermemesi için denklemden sileyim.

3- Ve bununla beraber bu basamakları içeren değişkenleri de sileyim ki boş kalan değerlerle yanlış toplam vermesinler.

------------------------------------

Birinci cümleye örnek: Aşağıda $toplam12=13 veriyor bunu ekrana yazdırayım.

İkinci cümleye örnek: Ancak $toplam14 de 13 veriyor. Ancak ben zaten birinci basamağı kullanarak bir sayı elde ettim. O yüzden $toplam12 bana 13'ü buldurduysa bunu bulduran birinci ve ikinci basamağı sildireyim ki aynı basamak $toplam14'de de işleme girip tekrar 13 yazdırmasın.

Üçüncü cümleye örnek: $toplam12'den 13'ü ekrana yazdırdık. İşleme giren basamakları denklemden sildik. Ancak sildiğimiz basamaklar başka değişkenlerde de tanımlı. Örneğin $toplam23= 9 verirken, ben ikinci basamağı sildirdiğim için artık 1 sonucunu verecek. Ve bu da tabi değer yanlış olacak.

Bunu önlemek için de bulduğumuz 13 ten sonra sildiğimiz kaynak basamaklarla beraber bu basamakları kullanan değişkenleri de sildirelim.

------------------------------------

Kim yapabilirse gerçekten eline sağlık helal olsun... Çok teşekkürler...

<?php

$birincibasamak= '5';
$ikincibasamak= '8';
$ucuncubasamak= '1';
$dorduncubasamak= '8';
$besincibasamak= '5';

$ktblst= array($birincibasamak, $ikincibasamak, $ucuncubasamak, $dorduncubasamak, $besincibasamak);

$toplam12= $ktblst[0] + $ktblst[1] ; ## 13
$toplam23= $ktblst[1] + $ktblst[2]; ## 9
$toplam34= $ktblst[2] + $ktblst[3]; ## 9
$toplam14= $ktblst[0] + $ktblst[3]; ## 13
$toplam145= $ktblst[0] + $ktblst[3] + $ktblst[4]; ## 18
$toplam12345= $ktblst[0] + $ktblst[1] + $ktblst[2]+ $ktblst[3] + $ktblst[4]; ## 27


$kafamdakidizi13 = [$toplam12, $toplam23, $toplam34, $toplam14, $toplam145, $toplam12345];


function delete($array){
    foreach ($array as $key => $val){
        if ($val[] == 13)###burada koptum ne yazsam işleme sokmuyor...
            unset($array[$key]);
    }
    return array_values($array);
}


print_r(delete($kafamdakidizi13));

?>

1 cevap

0 oy
(820 puan) tarafından cevaplandı
Değişkenleri silmek için unset() fonksiyonunu kullanabilirsin, ya da içerilerine false değer ver. Diğer ilk iki madde içinde toplama işlemlerini if ile kontrolüne sağlayıp değişkene atamaları yaparsın, uymazsa yapmazsın istediğin olur.

Değişken isimlerinde karışık, anlaşılır yaz kimse o yüzden okumamış uğraşmamış. Sonra bir tane obfuscator kullanırsın, böyle gizemli kalır kodların :)
Yazılım Biliminin Soru Cevap Platformuna hepiniz hoşgeldiniz. Bu platformda kurallara uyarak diğer geliştiricilerle yardımlaşabilirsiniz.
...