mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-02-07 12:36:25 +00:00
Implementing Set::check() and Set::remove()
git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@4515 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
parent
b6bc6d6033
commit
939d141287
1 changed files with 65 additions and 0 deletions
|
@ -278,6 +278,71 @@ class Set extends Object {
|
||||||
}
|
}
|
||||||
return $list;
|
return $list;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Removes an element from a Set or array
|
||||||
|
*
|
||||||
|
* @param mixed $list
|
||||||
|
* @param array $data
|
||||||
|
* @param mixed $path A dot-separated string.
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function remove(&$list, $path, $data = null) {
|
||||||
|
if (empty($data) && is_a($this, 'Set')) {
|
||||||
|
$data = $path;
|
||||||
|
$path = $list;
|
||||||
|
$list = $this->get();
|
||||||
|
}
|
||||||
|
if (!is_array($path)) {
|
||||||
|
$path = explode('.', $path);
|
||||||
|
}
|
||||||
|
$_list =& $list;
|
||||||
|
|
||||||
|
foreach($path as $i => $key) {
|
||||||
|
if (intval($key) > 0 || $key == '0') {
|
||||||
|
$key = intval($key);
|
||||||
|
}
|
||||||
|
if ($i == count($path) - 1) {
|
||||||
|
unset($_list[$key]);
|
||||||
|
} else {
|
||||||
|
if (!isset($_list[$key])) {
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
$_list =& $_list[$key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Checks if a particular path is set in an array
|
||||||
|
*
|
||||||
|
* @param mixed $data
|
||||||
|
* @param mixed $path A dot-separated string.
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function check($data, $path = null) {
|
||||||
|
if (empty($path) && is_a($this, 'Set')) {
|
||||||
|
$path = $data;
|
||||||
|
$data = $this->get();
|
||||||
|
}
|
||||||
|
if (!is_array($path)) {
|
||||||
|
$path = explode('.', $path);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($path as $i => $key) {
|
||||||
|
if (intval($key) > 0 || $key == '0') {
|
||||||
|
$key = intval($key);
|
||||||
|
}
|
||||||
|
if ($i == count($path) - 1) {
|
||||||
|
return isset($data[$key]);
|
||||||
|
} else {
|
||||||
|
if (!isset($data[$key])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$data =& $data[$key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Computes the difference between a Set and an array, two Sets, or two arrays
|
* Computes the difference between a Set and an array, two Sets, or two arrays
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Reference in a new issue