Cara menggunakan php sum double

Dalam tutorial ini, saya akan membuat daftar fungsi umum array PHP dengan contoh-contoh penggunaan dan praktek terbaik. Setiap pengembang PHP harus tahu bagaimana menggunakannya dan bagaimana menggabungkan fungsi array agar kode mudah dibaca dan singkat.

Juga, ada presentasi dengan contoh kode yang diberikan, sehingga Anda dapat men-downloadnya dari link yang berhubungan dan menunjukkannya kepada kolega Anda untuk membangun tim yang lebih kuat.

Dasar-Dasar

Mari kita mulai dengan fungsi dasar yang bekerja dengan kunci dan nilai array. Salah satu dari mereka adalah array_combine(), yang menciptakan sebuah array menggunakan satu array untuk kunci dan satu lagi untuk nilai-nilai:

$keys = ['sky', 'grass', 'orange'];
$values = ['blue', 'green', 'orange'];

$array = array_combine($keys, $values);
print_r($array);

// Array
// (
//     [sky] => blue
//     [grass] => green
//     [orange] => orange
// )

Anda harus tahu, bahwa fungsi array_values() mengembalikan array dari nilai yang diindeks, array_keys() mengembalikan array dari kunci array yang diberikan, dan array_flip() menukar kunci dengan nilai-nilai:

print_r(array_keys($array)); // ['sky', 'grass', 'orange']
print_r(array_values($array)); // ['blue', 'green', 'orange']
print_r(array_flip($array));

// Array
// (
//     [blue] => sky
//     [green] => grass
//     [orange] => orange
// )

Membuat Kode Anda Lebih Pendek

Fungsi list(), yang tidak benar-benar sebuah fungsi, tetapi bahasa konstruksi, dirancang untuk menetapkan variabel dengan cara singkat. Sebagai contoh, berikut ini adalah contoh dasar menggunakan fungsi list():

// define array
$array = ['a', 'b', 'c'];

// without list()
$a = $array[0];
$b = $array[1];
$c = $array[2];

// with list()
list($a, $b, $c) = $array;

Konstruksi ini bekerja sempurna dengan fungsi seperti preg_slit() atau explode(). Juga, Anda dapat melewatkan beberapa parameter, jika Anda tidak membutuhkan mereka untuk didefinisikan:

$string = 'hello|wild|world';
list($hello, , $world) = explode('|', $string);
echo("$hello, $world"); // hello, world

Juga, list() dapat digunakan dengan foreach, yang membuat konstruksi ini bahkan lebih baik:

$arrays = [[1, 2], [3, 4], [5, 6]];

foreach ($arrays as list($a, $b)) {
    $c = $a + $b;
    echo($c . ', '); // 3, 7, 11, 
}

Dengan fungsi extract(), Anda dapat mengekspor asosiatif array ke variabel. Untuk setiap elemen dari sebuah array, suatu variabel akan dibuat dengan nama kunci dan nilai sebagai nilai elemen:

$array = [
    'clothes' => 't-shirt',
    'size'    => 'medium',
    'color'   => 'blue',
];

extract($array);

echo("$clothes $size $color"); // t-shirt medium blue

Sadarilah bahwa extract() tidak aman jika Anda bekerja dengan data pengguna (seperti hasil dari permintaan), jadi sebaiknya gunakan fungsi ini dengan flag EXTR_IF_EXISTS dan EXTR_PREFIX_ALL.

Kebalikan dari fungsi sebelumnya adalah fungsi compact(), yang membuat array asosiatif dari variabel:

$clothes = 't-shirt';
$size = 'medium';
$color = 'blue';

$array = compact('clothes', 'size', 'color');
print_r($array);

// Array
// (
//     [clothes] => t-shirt
//     [size] => medium
//     [color] => blue
// )

Fungsi Penyaringan

Ada fungsi yang hebat bagi penyaringan array, dan itu disebut array_filter(). Menyampaikan array sebagai parameter pertama dan fungsi anonim sebagai parameter kedua. Mengembalikan true di sebuah fungsi callback jika Anda ingin meninggalkan elemen ini dalam array, dan false jika tidak:

$numbers = [20, -3, 50, -99, 55];

$positive = array_filter($numbers, function($number) {
    return $number > 0;
});

print_r($positive); // [0 => 20, 2 => 50, 4 => 55]

Ada cara untuk menyaring tidak hanya oleh nilai-nilai. Anda dapat menggunakan ARRAY_FILTER_USE_KEY atau ARRAY_FILTER_USE_BOTH sebagai parameter ketiga untuk menyampaikan kunci atau semua nilai dan kunci ke fungsi callback.

Juga, Anda dapat memanggil array_filter() tanpa callback untuk menghapus semua nilai kosong:

$numbers = [-1, 0, 1];

$not_empty = array_filter($numbers);

print_r($not_empty); // [0 => -1, 2 => 1]

Anda hanya bisa mendapatkan nilai-nilai unik dari array menggunakan fungsi array_unique(). Perhatikan bahwa fungsi ini akan menjaga kunci-kunci dari unsur-unsur unik pertama:

$array = [1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5];
$uniques = array_unique($array);

print_r($uniques);

// Array
// (
//     [0] => 1
//     [4] => 2
//     [7] => 3
//     [8] => 4
//     [9] => 5
// )

Dengan array_column(), Anda bisa mendapatkan daftar nilai kolom dari sebuah array multi-dimensi, seperti jawaban dari database SQL atau impor dari file CSV. Cukup menyampaikan array dan nama kolom:

$array = [
    ['id' => 1, 'title' => 'tree'],
    ['id' => 2, 'title' => 'sun'],
    ['id' => 3, 'title' => 'cloud'],
];

$ids = array_column($array, 'id');

print_r($ids); // [1, 2, 3]

Mulai dari PHP 7, array_column() menjadi lebih kuat, karena sekarang diizinkan untuk bekerja dengan sebuah array dari objek. Jadi bekerja dengan berbagai model dapat menjadi lebih mudah:

$cinemas = Cinema::find()->all();
$cinema_ids = array_column($cinemas, 'id'); // php7 forever!

Berjalan Melalui Array

Menggunakan array_map(), Anda dapat menerapkan callback untuk setiap elemen dari sebuah array. Anda dapat menyampaikan nama fungsi atau fungsi anonim untuk mendapatkan sebuah array baru berdasarkan pada array yang diberikan:

$cities = ['Berlin', 'KYIV', 'Amsterdam', 'Riga'];
$aliases = array_map('strtolower', $cities);

print_r($aliases); // ['berlin', 'kyiv, 'warsaw', 'riga']

$numbers = [1, -2, 3, -4, 5];
$squares = array_map(function($number) {
    return $number ** 2;
}, $numbers);

print_r($squares);  // [1, 4, 9, 16, 25]

Ada mitos bahwa tidak ada cara untuk menyampaikan nilai-nilai dan kunci dari array ke callback, tapi kita bisa memecahkannya:

$model = ['id' => 7, 'name'=>'James'];

$callback = function($key, $value) {
    return "$key is $value";
};

$res = array_map($callback, array_keys($model), $model);
print_r($res);

// Array
// (
//     [0] => id is 7
//     [1] => name is James
// )

Tapi ini terlihat kotor. Sebaliknnya lebih baik untuk menggunakan array_walk(). Fungsi ini terlihat sama seperti array_map(), tetapi bekerja berbeda. Pertama-tama, sebuah array dilewatkan oleh referensi, sehingga array_walk() tidak membuat array baru, tetapi mengubah array yang diberikan. Jadi sebagai array sumber, Anda dapat melewatkan nilai array dengan referensi dalam callback. Kunci array dapat juga dilewatkan dengan mudah:

$fruits = [
    'banana' => 'yellow',
    'apple' => 'green',
    'orange' => 'orange',
];

array_walk($fruits, function(&$value, $key) {
    $value = "$key is $value";
});

print_r($fruits);

// Array
// (
//     [banana] => banana is yellow
//     [apple] => apple is green
//     [orange] => orange is orange
// )

Menggabungkan Array

Cara terbaik untuk menggabungkan dua atau lebih array dalam PHP adalah dengan menggunakan fungsi array_merge(). Item dari array-array akan digabungkan bersama-sama, dan nilai-nilai yang sama dengan string kunci akan ditimpa dengan nilai terakhir:

$array1 = ['a' => 'a', 'b' => 'b', 'c' => 'c'];
$array2 = ['a' => 'A', 'b' => 'B', 'D' => 'D'];

$merge = array_merge($array1, $array2);
print_r($merge);
// Array
// (
//     [a] => A
//     [b] => B
//     [c] => c
//     [D] => D
// )

Untuk menghapus nilai array dari array lain (atau array-array), gunakan array_diff(). Untuk mendapatkan nilai-nilai yang hadir dalam array yang diberikan, gunakan array_intersect(). Contoh berikutnya akan menunjukkan cara kerjanya:

$array1 = [1, 2, 3, 4];
$array2 =       [3, 4, 5, 6];

$diff = array_diff($array1, $array2);
print_r($diff); // [0 => 1, 1 => 2]

$intersect = array_intersect($array1, $array2);
print_r($intersect);  // [2 => 3, 3 => 4]

Melakukan Perhitugan dengan Nilai-nilai Array

Gunakan array_sum() untuk mendapatkan jumlah nilai array, array_product() untuk melipatgandakan mereka, atau membuat rumus Anda sendiri dengan array_reduce():

$numbers = [1, 2, 3, 4, 5];

echo(array_sum($numbers)); // 15
echo(array_product($numbers)); // 120

echo(array_reduce($numbers, function($carry, $item) {
    return $carry ? $carry / $item : 1;
})); // 0.0083 = 1/2/3/4/5

Untuk menghitung semua nilai dari array, gunakan array_count_values(). Itu akan memberikan semua nilai-nilai unik dari array yang diberikan sebagai kunci dan menghitung nilai-nilai tersebut sebagai nilai:

$things = ['apple', 'apple', 'banana', 'tree', 'tree', 'tree'];
$values = array_count_values($things);

print_r($values);

// Array
// (
//     [apple] => 2
//     [banana] => 1
//     [tree] => 3
// )

Menghasilkan Array

Untuk menghasilkan sebuah array dengan ukuran tertentu dan nilai yang sama, gunakan array_fill():

$bind = array_fill(0, 5, '?');
print_r($bind); // ['?', '?', '?', '?', '?']

Untuk menghasilkan sebuah array dengan berbagai kunci dan nilai-nilai, seperti hari jam atau huruf, gunakan range():

$letters = range('a', 'z');
print_r($letters); // ['a', 'b', ..., 'z']

$hours = range(0, 23);
print_r($hours); // [0, 1, 2, ..., 23]

Untuk mendapatkan bagian dari array—misalnya, hanya tiga unsur pertama—gunakan array_slice():

$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$top = array_slice($numbers, 0, 3);
print_r($top); // [1, 2, 3]

Penyortiran Array

Ada baiknya untuk diingat bahwa setiap fungsi penyortiran di PHP bekerja dengan array dengan referensi dan mengembalikan true pada keberhasilan atau false pada kegagalan. Ada fungsi penyortiran dasar yang disebut sort(), dan ia menyortir nilai dalam urutan menaik tanpa mengamankan kunci. Fungsi penyortiran dapat didahului oleh huruf-huruf berikut:

  • a, menyortir mengamankan kunci
  • k, menyortir berdasarkan kunci
  • r, menyortir terbalik/urutan menurun
  • u, menyortir dengan fungsi user

Anda dapat melihat kombinasi dari huruf-huruf ini di dalam tabel berikut:

a k r u
a asort
arsort uasort
k ksort krsort
r arsort krsort rsort
u uasort
usort

Menggabungkan Fungsi Array Seperti Boss

Sihir yang nyata dimulai ketika Anda mulai menggabungkan fungsi-fungsi array. Berikut adalah bagaimana Anda dapat memotong dan memindahkan nilai-nilai kosong hanya dalam satu baris kode dengan array_filter() dan array_map():

$values = ['say  ', '  bye', ' ', ' to', ' spaces ', '   '];

$words = array_filter(array_map('trim', $values));
print_r($words); // ['say', 'bye', 'to', 'spaces']

Untuk membuat id ke judul peta dari array model, kita bisa menggunakan kombinasi dari array_combine() dan array_column():

$models = [$model1, $model2, $model3];

$id_to_title = array_combine(
    array_column($models, 'id'),
    array_column($models, 'title')
);

Untuk mendapatkan tiga nilai-nilai teratas dari sebuah array, kita dapat menggunakan array_count_values()arsort(), dan array_slice():

$letters = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'd', 'd', 'd'];

$values = array_count_values($letters); // get key to count array
arsort($values); // sort descending preserving key
$top = array_slice($values, 0, 3); // get top 3

print_r($top);
// Array
// (
//     [d] => 5
//     [a] => 4
//     [b] => 2
// )

Ini mudah untuk menggunakan array_sum() dan array_map() untuk menghitung jumlah pesanan dalam beberapa baris:

$order = [
    ['product_id' => 1, 'price' => 99, 'count' => 1],
    ['product_id' => 2, 'price' => 50, 'count' => 2],
    ['product_id' => 2, 'price' => 17, 'count' => 3],
];

$sum = array_sum(array_map(function($product_row) {
    return $product_row['price'] * $product_row['count'];
}, $order));

print_r($sum); // 250

Kesimpulan

Seperti yang Anda lihat, pengetahuan fungsi-fungsi utama array dapat membuat kode Anda jauh lebih pendek dan lebih mudah dibaca. Tentu saja, PHP memiliki lebih banyak fungsi array, dan bahkan fungsi yang diberikan memiliki banyak variasi untuk digunakan dengan parameter dan flag tambahan, tapi saya berpikir bahwa dalam tutorial ini kita telah membahas dasar-dasar yang setiap pengembang PHP harus mengetahuinya.

Harap dicatat bahwa saya telah membuat sebuah presentasi dengan contoh yang diberikan, sehingga Anda dapat men-download-nya dari link terkait dan menunjukkannya kepada tim Anda.

Jika Anda memiliki pertanyaan, jangan ragu untuk bertanya kepada mereka di komentar untuk artikel.

  • Manual Arrays di php.net
  • Fungsi anonim (closures) di php.net
  • Download presentasi untuk tim Anda