Bagaimana cara menambahkan semua nilai kolom dengan kunci asosiatif? Perhatikan bahwa kumpulan kunci bersifat dinamis.
Array masukan:
Array
(
[0] => Array
(
[gozhi] => 2
[uzorong] => 1
[ngangla] => 4
[langthel] => 5
)
[1] => Array
(
[gozhi] => 5
[uzorong] => 0
[ngangla] => 3
[langthel] => 2
)
[2] => Array
(
[gozhi] => 3
[uzorong] => 0
[ngangla] => 1
[langthel] => 3
)
)
Hasil yang diinginkan:
Array
(
[gozhi] => 10
[uzorong] => 1
[ngangla] => 8
[langthel] => 10
)
php
arrays
multidimensional-array
sum
marknt15
sumber
sumber
Jawaban:
sumber
n
array, gunakan solusi ini .Anda dapat menggunakan
array_walk_recursive()
untuk mendapatkan solusi kasus umum untuk masalah Anda ( solusi ketika setiap array dalam mungkin memiliki kunci unik ).Contoh dengan
array_walk_recursive()
untuk kasus umumJuga, karena PHP 5.5 Anda dapat menggunakan
array_column()
fungsi untuk mencapai hasil yang Anda inginkan untuk tombol yang tepat ,[gozhi]
misalnya:Contoh dengan
array_column()
untuk kunci yang ditentukanJika Anda ingin mendapatkan jumlah total dari semua array dalam dengan kunci yang sama ( hasil yang diinginkan yang telah Anda posting ), Anda dapat melakukan sesuatu seperti ini (perlu diingat bahwa array dalam pertama harus memiliki struktur yang sama dengan yang lain. ):
Contoh dengan
array_column()
seandainya semua array dalam memiliki kunci yang samaJika Anda ingin menggunakan solusi kasus umum
array_column()
maka pada awalnya Anda dapat mempertimbangkan untuk mendapatkan semua kunci unik, dan kemudian mendapatkan jumlah untuk setiap kunci:Contoh dengan
array_column()
untuk kasus umumsumber
Gunakan cuplikan ini:
sumber
Berikut adalah solusi yang mirip dengan dua solusi lainnya:
Tetapi ini tidak perlu memeriksa apakah kunci array sudah ada dan tidak juga memberikan pemberitahuan.
sumber
Itu juga bisa dilakukan dengan menggunakan
array_map
:sumber
sumber
Versi lain, dengan beberapa keunggulan di bawah.
Saya ingin menggabungkan yang terbaik dari jawaban Gumbo, Graviton, dan Chris J dengan tujuan berikut sehingga saya dapat menggunakan ini di aplikasi saya:
a) Inisialisasi kunci array 'sum' di luar loop (Gumbo). Harus membantu dengan kinerja pada array yang sangat besar (belum diuji!). Menghilangkan pemberitahuan.
b) Logika utama mudah dipahami tanpa harus membaca manual. (Graviton, Chris J).
c) Selesaikan masalah yang lebih umum untuk menambahkan nilai dari dua larik mana pun dengan kunci yang sama dan membuatnya kurang bergantung pada struktur sub larik.
Tidak seperti solusi Gumbo, Anda dapat menggunakan kembali ini jika nilainya tidak berada dalam sub larik. Bayangkan dalam contoh di bawah ini
$arr1
dan$arr2
tidak dikodekan dengan keras, tetapi dikembalikan sebagai hasil dari memanggil fungsi di dalam loop.sumber
Itu juga bisa dilakukan dengan menggunakan
array_walk
:Tidak begitu dapat dibaca seperti solusi sebelumnya tetapi berfungsi :)
sumber
Berikut adalah versi di mana kunci array mungkin tidak sama untuk kedua array, tetapi Anda ingin semuanya ada di array terakhir.
sumber
Kita perlu memeriksa dulu apakah kunci array memang ada.
KODE:
OUTPUT Dengan Validasi Kunci Array:
OUTPUT Tanpa Validasi Kunci Array:
Ini adalah praktik yang buruk meskipun hasilnya dicetak. Selalu periksa dulu jika ada kunci.
sumber
Bagi mereka yang mendarat di sini dan mencari solusi yang menggabungkan array N DAN juga menjumlahkan nilai kunci identik yang ditemukan di array N, saya telah menulis fungsi ini yang bekerja secara rekursif juga. (Lihat: https://gist.github.com/Nickology/f700e319cbafab5eaedc )
Contoh:
Akan menghasilkan:
Berikut kodenya:
sumber
Pergi melalui setiap item dari array dan jumlah nilai ke nilai sebelumnya jika ada, jika tidak hanya menetapkan nilainya.
Keluaran:
Atau cukup putar melalui setiap sub larik, dan kelompokkan nilai untuk setiap kolom. Akhirnya menjumlahkannya:
sumber
Di sini Anda mengetahui bagaimana saya biasanya melakukan operasi semacam ini.
sumber
Anda dapat mencoba ini:
dan akhirnya:
sumber
$a
dan$b
kapan Anda meneleponarray_map()
? Harap perbaiki jawaban hanya kode ini.ini berfungsi dengan baik pada proyek laravel saya
sumber
sumber
sumber
Misalnya, Anda dapat mengambil semua bidang dari hasil seperti ini di bawah.
Saya memilih 'keseimbangan' dari array dan menyimpan ke variabel
lalu di baris selanjutnya kamu bisa menjumlahkan seperti ini:
Semoga membantu.
sumber