cari

Rumah  >  Soal Jawab  >  teks badan

Kumpulan data tatasusunan 2D menggunakan nilai lajur untuk menjana tatasusunan 3D

<p>Saya mempunyai tatasusunan berbilang dimensi yang saya ingin kumpulkan berdasarkan nilai dalam lajur tertentu. </p> <p>Saya mahu mengumpulkan berdasarkan <kod>peringkat</kod>, tetapi saya tidak tahu nilai tahap terlebih dahulu. Jadi, saya tidak boleh menyebut <kod>sementara $i </kod> seperti dalam gelung <kod>untuk</kod> ; ialah kunci tahap nilai maksimum, dan walaupun saya tahu saya tidak pasti saya perlu melakukannya. </p> <pre class="brush:php;toolbar:false;">[ ['cust' => 'XT8900', 'type' => 'standard', 'level' => ['cust' => 'XT8944', 'type' => 'standard', 'level' => ['cust' => 'XT8922', 'type' => 'premier', 'level' => ['cust' => 'XT8816', 'type' => 'permier', 'level' => ['cust' => 'XT7434', 'type' => 'standard', 'level' => ]</pre> <p>Hasil yang diingini: </p> <pre class="brush:php;toolbar:false;">Array ( [1] => [0] => [cust] => [jenis] => ) [1] => [cust] => [jenis] => ) ) [3] => [2] => [cust] => [jenis] => ) [3] => [cust] => [jenis] => permier ) ) [7] => [4] => [cust] => [jenis] => ) ) )</pra> <p><br /></p>
P粉022140576P粉022140576567 hari yang lalu648

membalas semua(2)saya akan balas

  • P粉132730839

    P粉1327308392023-08-23 17:06:46

    Pendekatan terbaik adalah jika anda mempunyai kawalan ke atas membina tatasusunan awal kemudian sediakannya pada permulaan apabila menambah entri.

    Jika tiada kawalan, bina tatasusunan sementara untuk pengisihan:

    foreach ($input_arr as $key => &$entry) {
        $level_arr[$entry['level']][$key] = $entry;
    }

    Dengan cara ini anda mendapat borang yang anda inginkan dengan semua rujukan bersama-sama.

    Jika boleh, bina tatasusunan seperti ini pada mulanya.

    balas
    0
  • P粉998100648

    P粉9981006482023-08-23 15:20:11

    Pertama, anda perlu mengumpulkan mereka mengikut peringkat

    Gunakan foreach untuk mengulung tatasusunan, semak sama ada tahapnya sama dengan item sebelumnya, kemudian kumpulkannya dengan tatasusunan itu

    $templevel=0;   
    
      $newkey=0;
    
      $grouparr[$templevel]="";
    
      foreach ($items as $key => $val) {
       if ($templevel==$val['level']){
         $grouparr[$templevel][$newkey]=$val;
       } else {
         $grouparr[$val['level']][$newkey]=$val;
       }
         $newkey++;       
      }
    print($grouparr);

    Output

    print($grouparr); akan dipaparkan dalam format yang anda mahukan

    Anda juga boleh mencuba

    print($grouparr[7]);

    akan tunjukkan

    [7] => Array (
          [4] => Array (
                 [cust] => XT7434
                 [type] => standard
                 )
          )

    atau

    print($grouparr[3]);

    akan tunjukkan

    [3] => Array (
          [2] => Array (
                 [cust] => XT8922
                 [type] => premier
                 )
    
          [3] => Array (
                 [cust] => XT8816
                 [type] => permier
                 )
          )

    balas
    0
  • Batalbalas