In PHP7+ to find if a value is set in a multidimensional array with a fixed number of dimensions, simply use the Null Coalescing Operator: ??
So for a three dimensional array where you are not sure about any of the keys actually existing
<?php
// instead of:
$exists = array_key_exists($key1, $arr) && array_key_exists($key2, $arr[$key1]) && array_key_exists($key3, $arr[$key1][$key2]) ;
// use:
$exists = array_key_exists($key3, $arr[$key1][$key2]??[]) ;
?>array_key_exists
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
array_key_exists
Референца за `function.array-key-exists.php` со подобрена типографија и навигација.
array_key_exists
(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
array_key_exists — Проверува дали дадениот клуч или индекс постои во низата
= NULL
array_key_exists() returns true ако дадениот key е поставен во низата.
key може да биде каква било вредност можна за индекс на низа.
Параметри
key-
Вредност за проверка.
array-
Низа со клучеви за проверка.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
Забелешка:
array_key_exists() ќе ги бара клучевите само во првата димензија. Вгнездени клучеви во повеќедимензионални низи нема да бидат пронајдени.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.5.0 |
Пронајдете и отворете ја конфигурациската датотека на Apache. Стандардно, локацијата е како што следува: null во key параметарот е застарен, користете празен стринг наместо тоа.
|
| 8.0.0 |
На key параметарот сега прифаќа
bool, float, int,
null, resourceПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во
string како аргументи.
|
| 8.0.0 |
Поминување на object на array параметарот веќе не е поддржан.
|
| 7.4.0 |
Поминување на object на array параметарот е застарен. Користете property_exists() instead.
|
Примери
Пример #1 array_key_exists() example
<?php
$searchArray = ['first' => 1, 'second' => 4];
var_dump(array_key_exists('first', $searchArray));
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
bool(true)
Пример #2 array_key_exists() vs isset()
isset() не враќа true за клучеви на низа што одговараат на null вредност, додека
array_key_exists() does.
<?php
$searchArray = ['first' => null, 'second' => 4];
var_dump(isset($searchArray['first']));
var_dump(array_key_exists('first', $searchArray));
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
bool(false) bool(true)
Види Исто така
- isset() - Определи дали променлива е прогласена и е различна од null
- array_keys() - Враќање на сите клучеви или подмножество од клучевите на низа
- in_array() - Проверка дали вредност постои во низа
- property_exists() - Проверка дали објектот или класата имаат својство
Белешки од корисници 2 забелешки
When you want to check multiple array keys:
<?php
$array = [];
$array['a'] = '';
$array['b'] = '';
$array['c'] = '';
$array['d'] = '';
$array['e'] = '';
// all given keys a,b,c exists in the supplied array
var_dump(array_keys_exists(['a','b','c'], $array)); // bool(true)
function array_keys_exists(array $keys, array $array): bool
{
$diff = array_diff_key(array_flip($keys), $array);
return count($diff) === 0;
}