<?php
function isArrayFieldSet(array $array, $field, $separator = '/')
{
if (strpos($field, $separator) !== false) {
$path = explode($separator, $field);
$field = array_shift($path);
if (!is_null($field) && isset($array[$field])) {
if (count($path) > 0) {
return $this->isArrayFieldSet($array[], implode($separator, $path), $separator);
}
return true;
} else {
return false;
}
}
return isset($array[$field]);
}
$array = [
'a' => 'test',
'b' => [
'b2' => 123,
'b3' => [
'test' => true
]
]
];
$shouldPass = [
'a',
'b',
'b/b2',
'b/b3',
'b/b3/test'
];
$shouldNotPass = [
'c',
'b/b1',
'b/b2/bx',
'b/b3/test/x',
'c/L1',
'a/k15',
];
foreach ($shouldPass as $test) { isArrayFieldSet($array, $test, '/'); }
foreach ($shouldNotPass as $test) { isArrayFieldSet($array, $test, '/'); }
preferences:
49.41 ms | 402 KiB | 5 Q