Ini ialah tatasusunan Selepas menggunakan array_values, saya mendapati bahawa ia nampaknya telah disusun semula mengikut gesaan ID impolde bahawa tatasusunan tidak boleh digunakan sebagai parameter, objek juga digunakan, dan json juga ditukar. Bagaimana saya harus pergi?
Kemas kini:
Ini sudah memadai, tetapi selepas senarai semula baharu saya 0 array_colum, hasil cetakan [0] pergi ke penghujung tatasusunan.
Jika anda ingin menukar JSON kepada tatasusunan PHP, kaedahnya adalah seperti berikut
Pertama sekali, format data anda ialah JSON, yang perlu ditukar kepada tatasusunan PHP terlebih dahulu.
json_decode
第二个参数为TRUE
bermaksud mengekalkan nama kunci, jika tidak selepas JSON ditukar kepada tatasusunan PHP, nama kunci tatasusunan PHP akan disusun semula.Kemudian
$a['data']
值用array_column
处理,或者使用array_values
dalam data anda dan susun semula nilai tatasusunan.Jika anda ingin menukar PHP kepada JSON, tetapi gunakan
Data
中Data
为数组[]
.Selagi dalam tatasusunan PHP, ikuti di atas
array_column
或者array_values
处理过$a['Data']
dahulu, dan kemudian jalankan terusPerhatian
json_encode
第二个参数绝对不能用JSON_FORCE_OBJECT
,否则还是会使Data变为对象{}
.Kemas kini
Selepas membaca kod anda, saya nampaknya tahu apa yang anda mahu lakukan. Anda ingin mengetahui nilai ID dalam tatasusunan asal dan
$makeupId
相等的项,然后把它提前到数组第一个?如果是这样你的代码写复杂了。通过array_column()
Fungsi ajaib ini boleh mencapai keperluan anda dengan mudah. Kodnya adalah seperti berikutTamat kod
Kemudian, izinkan saya membincangkannya sekali lagi, mengapa anda menggunakan
array_values()
和array_column()
都会使顺序变乱。因为这两个函数都是会重新编号的,而且它编号的顺序,不是你键名的标签顺序,也就是说你键名手动写成0,1,2,3
并不会使它重新编号时候按照0,1,2,3
untuk mengisih. Tertib dinomborkan semula bergantung pada susunan kod anda dijalankan. Dalam erti kata lain, terakhir anda...[0] = $newarr sebenarnya bukan pada permulaan tatasusunan, tetapi pada penghujung keseluruhan tatasusunan Cuma nama kuncinya ialah 0, jadi tidak kira betapa sukarnya anda mencuba , ini 0 sepadan dengan Elemen semua akan berjalan hingga akhir.Kemas kini 2
Terdapat banyak komen dan penjelasan dalam kod di atas, berikut adalah kod tulen:
Kemas kini 3
Mari tambah beberapa lagi kandungan Di bawah adalah beberapa penyelesaian yang boleh dilaksanakan selain
array_column
.Pilihan 1:
Penyelesaian ini adalah berdasarkan pengubahsuaian kod asal anda.
)Tambahkan
$retlist = ...
pada baris kedua hingga terakhir kod anda (di atasPilihan 2:
Penyelesaian ini juga berdasarkan pengubahsuaian kod asal anda.
dalam kod andaTukar
$retlist[0] = $newarr;
改为array_unshift($retlist, $newarr);
Seperti yang dinyatakan di atas,
array_column
和array_values
都会重新编号,重新编号的顺序取决于你定义对应值的顺序,而并非是键名的数字顺序,所以上面这个修改,是用数组头部推入项替代$retlist[0]
danarray_values
akan dinomborkan semula Susunan penomboran semula bergantung pada susunan di mana anda mentakrifkan nilai yang sepadan, bukan susunan berangka nama kunci, jadi pengubahsuaian di atas adalah untuk. gunakan tatasusunan Item tolak pengepala menggantikan definisi nilai dan permulaan$retlist[0]
.Pilihan 3:
Ini juga diubah suai berdasarkan kod anda.
Sebelum anda melintasi, tentukan
$retlist[0] = []
,然后当你遍历到符合$makeupId
项的时候,直接赋值给$retlist[0]
,这样,由于事先定义了$retlist[0]
dahulu, jadi walaupun dinomborkan semula, susunannya tetap menjadi yang pertama.Adakah ini bermakna bahawa hanya mengalih keluar nilai kunci adalah sama dengan mengalih keluar satu lapisan tatasusunan berbilang dimensi? Jika ya, saya menulis contoh kasar Anda boleh mengikuti idea ini untuk melaksanakannya, seperti yang ditunjukkan dalam gambar di atas
.Sebaik-baiknya menukar data json kepada tatasusunan php untuk pemprosesan yang lebih mudah. Jika tidak, ia akan menjadi sukar untuk ditangani.