• 12-06-2021, 11:04:01
    #10
    Üyeliği durduruldu
    Neron adlı üyeden alıntı: mesajı görüntüle
    tek bir array içinden bunu yapmak istemenin bir mantığı görünmüyor, varsa açıklaman lazım
    bence 2 farklı array kullanmalısın yada verilere tanımlama yapman lazım

    $data1 = array('1,4,Beyaz','1,8,Siyah');
    $data2 = array('2,1,S','2,5,L','2,7,XL' );

    veya
    $data = array('1,4,Beyaz' => '2,1,S|2,5,L|2,7,XL' ,'1,8,Siyah' => '2,1,S|2,5,L|2,7,XL');

    gibi.

    2 ne işe yarıyor mesela bu array da hiç bir yerde kullanmamışsın
    Data 3. taraf apiden geldiği için değiştirme şansım yok malesef. çözmek üzereyim, ilginiz ve cevaplarınız için teşekkür ederim.
  • 12-06-2021, 11:14:09
    #11
    Üyeliği durduruldu
    Cevap yazan ve yardımcı olmaya çalışan arkadaşlara teşekkürler.

    Sorunu çözdüm.

    Belki birinin işine yarayabilir diye kodları aşağı bırakıyorum:

    <?php
    
    $data = array('1,4,Beyaz','1,8,Siyah','5,1,S','5,5,L','5,7,XL');
    
    $arr = array();
    foreach ( $data as $d ) {
    if ( strpos($d,",") !== false ) {
    $v = explode(",",$d);
    $grupID = $v[0];
    $attrID = $v[1];
    $name = $v[2];
    $arr[] = array(
    'grup' => $grupID,
    'id' => $attrID,
    'name' => $name
    );
    }
    }
    
    $grupID = array();
    foreach ( $arr as $s ) {
    $grupID[] = $s['grup'];
    }
    $grupID = array_count_values($grupID);
    
    $newarr = array();
    foreach ( $arr as $k => $v ) {
    $newarr[$v['grup']][] = array(
    'id' => $v['id'],
    'name' => $v['name']
    );
    }
    $newarr = array_values($newarr);
    
    $final = array();
    foreach ( $newarr as $k => $v ) {
    if ( !empty($newarr[$k+1]) ) {
    for ( $i=0; $i<count($newarr[$k]); $i++ ) {
    for ( $j=0; $j<count($newarr[$k+1]); $j++ ) {
    $final[] = array(
    'id' => $newarr[$k+1][$j]['id'] . ',' . $newarr[$k+1][$j]['name'],
    'name' => $newarr[$k][$i]['id'] . ',' . $newarr[$k][$i]['name']
    );
    }
    }
    }
    }
    
    print_r($final);
    ?>