dokumentasi yang direkomendasikan
menggunakan generate_subscripts
fungsi. Fungsi di bawah ini mengemulasi array_search
PHP :
CREATE FUNCTION array_search(needle ANYELEMENT, haystack ANYARRAY)
RETURNS INT AS $$
SELECT i
FROM generate_subscripts($2, 1) AS i
WHERE $2[i] = $1
ORDER BY i
$$ LANGUAGE sql STABLE;
Ini mengembalikan indeks kecocokan pertama, jika ada. Jika Anda ingin semua kecocokan, cukup ubah RETURNS INT
ke RETURNS SETOF INT
. Fungsi ini, sebagaimana adanya, mengembalikan NULL
jika tidak ada yang cocok.
Fungsi ini hanya bekerja dengan array satu dimensi.
Juga, ingatlah bahwa array_search(NULL, a)
selalu mengembalikan NULL
, bahkan jika array berisi elemen null:
> SELECT array_search(null, array[1, 2, null, 4]);
array_search
--------------
(1 row)
Ini karena SQL menganggap NULL = NULL
menjadi tidak diketahui (yaitu NULL
). Lihat functions-comparison
. Jika Anda ingin array_search
untuk dapat menemukan NULL
elemen, ubah
WHERE $2[i] = $1
untuk
WHERE $2[i] IS NOT DISTINCT FROM $1