• 05-06-2023, 18:20:46
    #1
    $islemler = array(
        array("id" => array(1,11,21),    "adres" => "user1"),
        array("id" => array(2,12,22),    "adres" => "user2"),
        array("id" => array(3,13,23),    "adres" => "user3"),
        array("id" => array(4,14,24),    "adres" => "user4"),
        array("id" => array(5,15,25),    "adres" => "user4"),
        array("id" => array(6,16,26),    "adres" => "user5"),
        array("id" => array(7,17,27),    "adres" => "user6"),
        array("id" => array(8,18,28),    "adres" => "user7"),
        array("id" => array(9,19,29),    "adres" => "user8"),
        array("id" => array(10,20,30),  "adres" => "user9")
    );
    Merhabalar, yukarıda gördüğünüz gibi bir dizi yapısına sahibim.
    Kullanıcılar GET ile 1-30 arası istek atıyorlar ve bende gelen get isteği hangi id içerisinde varsa o id'ye karşılık gelen kullanıcı adresini alıyorum ve işliyorum.

    Sorum şöyle; Burada belirttiğim id sütunu $islemler içerisinde sayı artması halinde, yani user10, user11 gibi eklemeler yaptığımda id'ye karşılık gelen tarafı değiştirmem gerekli.

    ÖRN:


    $islemler = array(
        array("id" => array(1,14,27),    "adres" => "user1"),
        array("id" => array(2,15,28),    "adres" => "user2"),
        array("id" => array(3,16,29),    "adres" => "user3"),
        array("id" => array(4,17,30),    "adres" => "user4"),
        array("id" => array(5,18),    "adres" => "user4"),
        array("id" => array(6,19),    "adres" => "user5"),
        array("id" => array(7,20),    "adres" => "user6"),
        array("id" => array(8,21),    "adres" => "user7"),
        array("id" => array(9,22),    "adres" => "user8"),
        array("id" => array(10,23),  "adres" => "user9"),
        array("id" => array(11,24),  "adres" => "user10"),
        array("id" => array(12,25),  "adres" => "user11"),
        array("id" => array(13,26),  "adres" => "user12")
    ...
    ...
    ...
    );
    Gibi sayıların sürekli 1-30 içerisinde düzenli şekilde dağılması gerekli ama gerekli matematiği birtürlü kafamda kuramamdım.



    ÇÖZÜM EDİT//



    Kendim çözdüm arkadaşlar, ilgilenen herkese teşekkürler, ihtiyacı olan olursa diye formülü bıraktım buraya.

    
    $islemler = array(
        array("adres" => "user1"),
        array("adres" => "user2"),
        array("adres" => "user3"),
        array("adres" => "user4"),
        array("adres" => "user5"),
        array("adres" => "user6"),
        array("adres" => "user7"),
        array("adres" => "user8"),
        array("adres" => "user9"),
        array("adres" => "user10"),
        array("adres" => "user11"),
        array("adres" => "user12")
    );
    
    $toplam_islem = count($islemler);
    $bol = ceil(30 / count($islemler));
    
    $arti = 1;
    for ($e=1;$e<=$bol;$e++) {
        for ($i=0;$i<$toplam_islem;$i++) {
            if ($arti > 30) break 2;
            $islemler[$i]["id"][$e] = $arti;
            $arti++;
        }
    }
  • 05-06-2023, 18:27:23
    #2
    oktayc0 adlı üyeden alıntı: mesajı görüntüle
    $islemler = array(
        array("id" => array(1,11,21),    "adres" => "user1"),
        array("id" => array(2,12,22),    "adres" => "user2"),
        array("id" => array(3,13,23),    "adres" => "user3"),
        array("id" => array(4,14,24),    "adres" => "user4"),
        array("id" => array(5,15,25),    "adres" => "user4"),
        array("id" => array(6,16,26),    "adres" => "user5"),
        array("id" => array(7,17,27),    "adres" => "user6"),
        array("id" => array(8,18,28),    "adres" => "user7"),
        array("id" => array(9,19,29),    "adres" => "user8"),
        array("id" => array(10,20,30),  "adres" => "user9")
    );
    Merhabalar, yukarıda gördüğünüz gibi bir dizi yapısına sahibim.
    Kullanıcılar GET ile 1-30 arası istek atıyorlar ve bende gelen get isteği hangi id içerisinde varsa o id'ye karşılık gelen kullanıcı adresini alıyorum ve işliyorum.

    Sorum şöyle; Burada belirttiğim id sütunu $islemler içerisinde sayı artması halinde, yani user10, user11 gibi eklemeler yaptığımda id'ye karşılık gelen tarafı değiştirmem gerekli.

    ÖRN:


    $islemler = array(
        array("id" => array(1,14,27),    "adres" => "user1"),
        array("id" => array(2,15,28),    "adres" => "user2"),
        array("id" => array(3,16,29),    "adres" => "user3"),
        array("id" => array(4,17,30),    "adres" => "user4"),
        array("id" => array(5,18),    "adres" => "user4"),
        array("id" => array(6,19),    "adres" => "user5"),
        array("id" => array(7,20),    "adres" => "user6"),
        array("id" => array(8,21),    "adres" => "user7"),
        array("id" => array(9,22),    "adres" => "user8"),
        array("id" => array(10,23),  "adres" => "user9"),
        array("id" => array(11,24),  "adres" => "user10"),
        array("id" => array(12,25),  "adres" => "user11"),
        array("id" => array(13,26),  "adres" => "user12")
    ...
    ...
    ...
    );
    Gibi sayıların sürekli 1-30 içerisinde düzenli şekilde dağılması gerekli ama gerekli matematiği birtürlü kafamda kuramamdım.
    Hocam çalışma mantığını biraz daha açarsanız daha net sonuçlar verebiliriz ama şöyle olabilir ilk kısım id sayısı kadar geliyor diğer kısımlarada id sayısına +1 ekleyerek devam edebilirsiniz
  • 05-06-2023, 18:47:47
    #3
    Jouns adlı üyeden alıntı: mesajı görüntüle
    Hocam çalışma mantığını biraz daha açarsanız daha net sonuçlar verebiliriz ama şöyle olabilir ilk kısım id sayısı kadar geliyor diğer kısımlarada id sayısına +1 ekleyerek devam edebilirsiniz
    Hocam GET ile gelen değer 1-30 arası, ben gelen değer id sütununda hangi indisin içerisinde varsa ona göre user_adını alıyorum. (Örneğin GET'ten 7 geldiyse user6'yı alıyorum.)


    $islemler = array(
        array("id" => array(1,11,21),    "adres" => "user1"),
        array("id" => array(2,12,22),    "adres" => "user2"),
        array("id" => array(3,13,23),    "adres" => "user3"),
        array("id" => array(4,14,24),    "adres" => "user4"),
        array("id" => array(5,15,25),    "adres" => "user4"),
        array("id" => array(6,16,26),    "adres" => "user5"),
        array("id" => array(7,17,27),    "adres" => "user6"),
        array("id" => array(8,18,28),    "adres" => "user7"),
        array("id" => array(9,19,29),    "adres" => "user8"),
        array("id" => array(10,20,30),  "adres" => "user9")
    );
    
    /*
    
    Burada şimdi 10 tane user olduğu için, 1-30 arası id dağılımı bu şekilde oluyor.
    Şimdi user sayısı arttıkça bu dağılım değişmek zorunda, bu dağılımı artmaya bağlı olarak nasıl düzenli halde değiştirebilirim?
    
    */
  • 05-06-2023, 19:24:40
    #4
    oktayc0 adlı üyeden alıntı: mesajı görüntüle
    Hocam GET ile gelen değer 1-30 arası, ben gelen değer id sütununda hangi indisin içerisinde varsa ona göre user_adını alıyorum. (Örneğin GET'ten 7 geldiyse user6'yı alıyorum.)


    $islemler = array(
        array("id" => array(1,11,21),    "adres" => "user1"),
        array("id" => array(2,12,22),    "adres" => "user2"),
        array("id" => array(3,13,23),    "adres" => "user3"),
        array("id" => array(4,14,24),    "adres" => "user4"),
        array("id" => array(5,15,25),    "adres" => "user4"),
        array("id" => array(6,16,26),    "adres" => "user5"),
        array("id" => array(7,17,27),    "adres" => "user6"),
        array("id" => array(8,18,28),    "adres" => "user7"),
        array("id" => array(9,19,29),    "adres" => "user8"),
        array("id" => array(10,20,30),  "adres" => "user9")
    );
    
    /*
    
    Burada şimdi 10 tane user olduğu için, 1-30 arası id dağılımı bu şekilde oluyor.
    Şimdi user sayısı arttıkça bu dağılım değişmek zorunda, bu dağılımı artmaya bağlı olarak nasıl düzenli halde değiştirebilirim?
    
    */

    $kullaniciSayisi = 20; // Kullanıcı sayısını istediğiniz değere göre değiştirin
    
    $islemler = array();
    
    for ($i = 1; $i <= $kullaniciSayisi; $i++) {
        $baslangicId = ($i - 1) * 10 + 1;
        $bitisId = $i * 10;
        $adres = "user" . $i;
        
        $islemler[] = array(
            "id" => range($baslangicId, $bitisId),
            "adres" => $adres
        );
    }
    hocam chatgpt ye sordum şimdilik ama deneyebilir misiniz
  • 05-06-2023, 19:26:18
    #5
    Jouns adlı üyeden alıntı: mesajı görüntüle
    $kullaniciSayisi = 20; // Kullanıcı sayısını istediğiniz değere göre değiştirin
    
    $islemler = array();
    
    for ($i = 1; $i <= $kullaniciSayisi; $i++) {
        $baslangicId = ($i - 1) * 10 + 1;
        $bitisId = $i * 10;
        $adres = "user" . $i;
        
        $islemler[] = array(
            "id" => range($baslangicId, $bitisId),
            "adres" => $adres
        );
    }
    hocam chatgpt ye sordum şimdilik ama deneyebilir misiniz


    Teşekkürler ilginizi ama bu sorunum için çözüm değil.
    Orada belirttiğim user1,user2 vs. bunlar temsili isimlerdir, bunlar dinamik kullanıcı adlarını içermektedir.
  • 05-06-2023, 19:42:13
    #6
    Kendim çözdüm arkadaşlar, ilgilenen herkese teşekkürler, ihtiyacı olan olursa diye formülü bıraktım buraya.

    
    $islemler = array(
        array("adres" => "user1"),
        array("adres" => "user2"),
        array("adres" => "user3"),
        array("adres" => "user4"),
        array("adres" => "user5"),
        array("adres" => "user6"),
        array("adres" => "user7"),
        array("adres" => "user8"),
        array("adres" => "user9"),
        array("adres" => "user10"),
        array("adres" => "user11"),
        array("adres" => "user12")
    );
    
    $toplam_islem = count($islemler);
    $bol = ceil(30 / count($islemler));
    
    $arti = 1;
    for ($e=1;$e<=$bol;$e++) {
        for ($i=0;$i<$toplam_islem;$i++) {
            if ($arti > 30) break 2;
            $islemler[$i]["id"][$e] = $arti;
            $arti++;
        }
    }
  • 05-06-2023, 19:46:56
    #7
    get aralığı 1-30
    user aralığı da artabilir ve min 10, 11 ollduğunda baştan sona ayar yapacak ve getlerde kayma olacak getler user artışına eşit oranda dağılacak.

    şu tarz bir basit işlem belki işine yarar. userlara değer atayın 1,2,3,4....11diye
    geiti user sayısına bölün bu döngü sayımız olacak. örnek 30/10=3 dögü sayısı fazla olabilir önemi yok. bu kodu yormamak için gerekli
    ilk dögüde kendi değerleri direkt get olarak atasın
    ikinci döngü-kendilerine atanmış en son get değeri + user sayının toplamı 30 dan kücükse get olarak atasınlar
    üçüncü döngü-kendilerine atanmış en son get değeri + user sayının toplamı 30 dan kücükse get olarak atasınlar
  • 05-06-2023, 19:48:31
    #8
    mhls adlı üyeden alıntı: mesajı görüntüle
    get aralığı 1-30
    user aralığı da artabilir ve min 10, 11 ollduğunda baştan sona ayar yapacak ve getlerde kayma olacak getler user artışına eşit oranda dağılacak.

    şu tarz bir basit işlem belki işine yarar. userlara değer atayın 1,2,3,4....11diye
    geiti user sayısına bölün bu döngü sayımız olacak. örnek 30/10=3 dögü sayısı fazla olabilir önemi yok. bu kodu yormamak için gerekli
    ilk dögüde kendi değerleri direkt get olarak atasın
    ikinci döngü-kendilerine atanmış en son get değeri + user sayının toplamı 30 dan kücükse get olarak atasınlar
    üçüncü döngü-kendilerine atanmış en son get değeri + user sayının toplamı 30 dan kücükse get olarak atasınlar
    İlginize teşekkürler hocam, bir üst cevapta çözümünü bıraktım. Çok sağolun..