Array pencarian php dengan kunci

Untuk menangani pencarian array multidimensi, Anda dapat menggunakan pernyataan foreach atau fungsi

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
0

Array multidimensi PHP dapat dicari untuk melihat apakah ia memiliki nilai tertentu

Mari kita lihat contoh melakukan pencarian. Misalkan Anda memiliki array multidimensi dengan struktur berikut

$users = [
    [
        "uid" => "111",
        "name" => "Nathan",
        "age" => 29,
    ],
    [
        "uid" => "254",
        "name" => "Jessie",
        "age" => 25,
    ],
    [
        "uid" => "305",
        "name" => "Michael",
        "age" => 30,
    ],
];
_

Untuk mencari array berdasarkan nilainya, Anda dapat menggunakan pernyataan foreach

Anda perlu mengulang array dan melihat apakah salah satu array anak memiliki nilai tertentu

Misalnya, Anda ingin mendapatkan array dengan nilai

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
2 dari
$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
3

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}

Perhatikan bahwa operator pembanding pada kode di atas menggunakan triple equal

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
4

Ini berarti jenis nilai yang dibandingkan harus sama

Kode di atas akan menghasilkan output berikut

Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
_

Di PHP5. 5 ke atas, Anda juga dapat menggunakan fungsi

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
_0 dikombinasikan dengan fungsi
$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
6 untuk menemukan larik yang cocok dengan kondisi

Lihat contoh di bawah ini

$name = "Michael";
$key = array_search($name, array_column($users, "name"));
print_r($users[$key]);
_

Kode di atas akan menghasilkan output berikut

Array
(
    [uid] => 305
    [name] => Michael
    [age] => 30
)

Mari buat fungsi khusus dari kode penelusuran sehingga Anda dapat melakukan penelusuran yang lebih dinamis berdasarkan kunci dan nilai

Fungsi kustom ini menerima tiga parameter

  1. $id = "111";
    foreach ($users as $k => $v) {
        if ($v["uid"] === $id) {
            print $users[$k];
        }
    }
    
    7 yang ingin Anda cari
  2. $id = "111";
    foreach ($users as $k => $v) {
        if ($v["uid"] === $id) {
            print $users[$k];
        }
    }
    
    8 yang ingin Anda miliki kuncinya
  3. $id = "111";
    foreach ($users as $k => $v) {
        if ($v["uid"] === $id) {
            print $users[$k];
        }
    }
    
    9 yang ingin Anda cari

Fungsi tersebut dapat ditulis sebagai berikut

function find_array($name, $value, $array) {
    $key = array_search($name, array_column($array, $value));
    return $array[$key];
}

Untuk menangani kasus di mana nilai spesifik tidak ditemukan, Anda perlu menambahkan kondisi

Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
0 ke fungsi

Anda dapat mengembalikan

Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
1 atau
Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
2 ketika
Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
3 tidak ditemukan

function find_array($k, $v, $array) {
    $key = array_search($v, array_column($array, $k));
    // 👇 key is found, return the array
    if ($key !== false) {
        return $array[$key];
    }
    // 👇 key is not found, return false
    return false;
}

Sekarang Anda dapat menggunakan fungsi

Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
_4 kapan saja Anda perlu mencari array multidimensi

Berikut beberapa contohnya

// 👇 value exists
$result = find_array("name", "Jessie", $users);
if ($result) {
    print_r($result);
} else {
    print "Array with that value is not found!";
}

// 👇 value doesn't exists
$result = find_array("uid", "1000", $users);
if ($result) {
    print_r($result);
} else {
    print "Array with that value is not found!";
}

Kode di atas akan menghasilkan output berikut

Array
(
    [uid] => 254
    [name] => Jessie
    [age] => 25
)
Array with that value is not found!

Sekarang Anda telah mempelajari cara mencari array multidimensi di PHP

Saat Anda perlu menemukan array dengan nilai tertentu, Anda hanya perlu memanggil fungsi

Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
4 di atas

Bagaimana cara mencocokkan nilai kunci array di PHP?

Fungsi array_intersect_key() membandingkan kunci dari dua (atau lebih) array, dan mengembalikan kecocokannya. Fungsi ini membandingkan kunci dari dua atau lebih larik, dan mengembalikan larik yang berisi entri dari larik1 yang ada di larik2, larik3, dll.

Bagaimana cara mencari berdasarkan nilai kunci dalam array multidimensi di PHP?

Untuk mengatasi ini, kita akan menggunakan array_column() dan fungsi array_column. Kode sederhana untuk mencari nilai dalam array multidimensi dijelaskan sebagai berikut. array_search($value['id'], array_column($studentsAddress, 'user_id'))

Bagaimana cara mencari banyak nilai dalam array di PHP?

Jika Anda juga ingin menemukan duplikatnya, Anda dapat melakukan pass terlebih dahulu dengan array_unique, kemudian melakukan iterasi pada array tersebut menggunakan kunci_array pada aslinya; anything which returns an array of length > 1 is a duplicate, and the result is the keys in which the duplicates are stored.

Bagaimana cara memfilter array di PHP?

Fungsi array_filter() memfilter nilai array menggunakan fungsi callback . Fungsi ini meneruskan setiap nilai larik input ke fungsi callback. Jika fungsi callback mengembalikan true, nilai saat ini dari input dikembalikan ke array hasil. Kunci array dipertahankan.