Rumah  >  Soal Jawab  >  teks badan

Kaedah PHP untuk menambah tatasusunan bersarang dalam tatasusunan senarai menggunakan nilai

Anda mungkin tidak dapat melihat apa-apa, Saya mempunyai dua tatasusunan:

$grid =
      
    Array
    (
        [0] => 3
        [1] => 2
        [2] => 3
        [3] => 2
    )

$elements =   

 Array
    (
        [0] => 24426
        [1] => 25015
        [2] => 24422
        [3] => 24425
        [4] => 24531
        [5] => 24421
        [6] => 24530
        [7] => 24532
        [8] => 25016
        [9] => 24418
    )

Pada asasnya, ideanya adalah untuk mempunyai sesuatu yang serupa untuk setiap nilai $grid dan nilai $elemen . Contohnya, [0] => 3 digelung tiga kali akan mendapat 24426,25015,24422. Sekarang inilah masalahnya, untuk hasil kedua [1] => 2 Saya hanya perlu mendapatkan dua nilai, tetapi bukan nilai sebelumnya bagi tiga $elemen yang berulang. Jadi pada asasnya dalam lelaran kedua saya akan mendapat 24425,24531.

Nota: $nilai grid boleh jadi 1 , 2 ,3 ....300...n;

Tatasusunan keputusan sepatutnya kelihatan seperti ini:

Array
    (
        [0] => 3,24426
        [1] => 3,25015
        [2] => 3,24422
        [3] => 2,24425
        [4] => 2,24531
        [5] => 3,24421
        [6] => 3,24530
        [7] => 3,24532
        [8] => 2,25016
        [9] => 2,24418
  
  )

P粉005134685P粉005134685185 hari yang lalu332

membalas semua(1)saya akan balas

  • P粉667649253

    P粉6676492532024-03-23 09:05:35

    EDIT: Ubah kod sedikit agar sesuai dengan format output yang diingini

    Sila pertimbangkan kod ini.

    $grid = [3, 2, 3, 2];
    $elements = [24426,25015,24422,24425,24531,24421,24530,24532,25016,24418];
    
    $result = [];
    foreach($grid as $take) {
        $org_take = $take;
        while($take-- > 0) {
            if (empty($elements)) {
                throw new Exception('Not enough elements');
            }
            $result[] = sprintf('%d,%d', $org_take, array_shift($elements));
        }
    }
    
    print_r($result);

    Memberi hasil:

    Array ( 
        [0] => 3,24426 
        [1] => 3,25015 
        [2] => 3,24422 
        [3] => 2,24425 
        [4] => 2,24531 
        [5] => 3,24421 
        [6] => 3,24530 
        [7] => 3,24532 
        [8] => 2,25016 
        [9] => 2,24418 
    )

    balas
    0
  • Batalbalas