Kumpulan data tatasusunan 2D menggunakan nilai lajur untuk menjana tatasusunan 3D
P粉022140576
P粉022140576 2023-08-22 18:37:00
0
2
567
<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粉022140576
P粉022140576

membalas semua(2)
P粉132730839

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.

P粉998100648

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
             )
      )
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan