forked from extern/egroupware
fixed isset_array to deal with multiple sub-indices
This commit is contained in:
parent
8ca325184d
commit
1713f946c9
@ -187,7 +187,7 @@
|
|||||||
}
|
}
|
||||||
if ($this->name && $this->name == $this->debug)
|
if ($this->name && $this->name == $this->debug)
|
||||||
{
|
{
|
||||||
echo "$this->name ".($check_col ? 'col' : 'row')."-check: c=$c, r=$r, idx='$org_idx' ==> ".($Ok?'True':'False')."<p>\n";
|
echo "$this->name ".($check_col ? 'col' : 'row')."-check: c=$c, r=$r, idx='$org_idx'='$idx' idx_cname='$idx_cname' ==> ".($Ok?'True':'False')."<p>\n";
|
||||||
}
|
}
|
||||||
return $Ok;
|
return $Ok;
|
||||||
}
|
}
|
||||||
@ -583,16 +583,23 @@
|
|||||||
@function isset_array
|
@function isset_array
|
||||||
@syntax isset_array( $arr,$idx )
|
@syntax isset_array( $arr,$idx )
|
||||||
@author ralfbecker
|
@author ralfbecker
|
||||||
@abstract checks if idx, which may contain ONE subindex is set in array
|
@abstract checks if idx, which may contain multiple subindex (eg.'x[y][z]'), is set in array
|
||||||
@author ralfbecker
|
@author ralfbecker
|
||||||
*/
|
*/
|
||||||
function isset_array($arr,$idx)
|
function isset_array($arr,$idx)
|
||||||
{
|
{
|
||||||
if (ereg('^([^[]*)\\[(.*)\\]$',$idx,$regs))
|
$idxs = explode('[',str_replace(']','',$idx));
|
||||||
|
$last_idx = array_pop($idxs);
|
||||||
|
$pos = &$arr;
|
||||||
|
foreach($idxs as $idx)
|
||||||
{
|
{
|
||||||
return $regs[2] && isset($arr[$regs[1]][$regs[2]]);
|
if (!is_array($pos))
|
||||||
|
{
|
||||||
|
return False;
|
||||||
}
|
}
|
||||||
return isset($arr[$idx]);
|
$pos = &$pos[$idx];
|
||||||
|
}
|
||||||
|
return isset($pos[$last_idx]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -611,7 +618,7 @@
|
|||||||
}
|
}
|
||||||
$idxs = explode('[',str_replace(']','',$idx));
|
$idxs = explode('[',str_replace(']','',$idx));
|
||||||
$pos = &$arr;
|
$pos = &$arr;
|
||||||
while (list($n,$idx) = each($idxs))
|
foreach($idxs as $idx)
|
||||||
{
|
{
|
||||||
$pos = &$pos[$idx];
|
$pos = &$pos[$idx];
|
||||||
}
|
}
|
||||||
@ -635,7 +642,7 @@
|
|||||||
}
|
}
|
||||||
$idxs = explode('[',str_replace(']','',$idx));
|
$idxs = explode('[',str_replace(']','',$idx));
|
||||||
$pos = &$arr;
|
$pos = &$arr;
|
||||||
while (list($n,$idx) = each($idxs))
|
foreach($idxs as $idx)
|
||||||
{
|
{
|
||||||
if (!is_array($pos))
|
if (!is_array($pos))
|
||||||
{
|
{
|
||||||
@ -662,12 +669,13 @@
|
|||||||
die('set_array() $arr is no array');
|
die('set_array() $arr is no array');
|
||||||
}
|
}
|
||||||
$idxs = explode('[',str_replace(']','',$idx));
|
$idxs = explode('[',str_replace(']','',$idx));
|
||||||
|
$last_idx = array_pop($idxs);
|
||||||
$pos = &$arr;
|
$pos = &$arr;
|
||||||
while ((list($n,$idx) = each($idxs)) && $n < count($idxs)-1)
|
foreach($idxs as $idx)
|
||||||
{
|
{
|
||||||
$pos = &$pos[$idx];
|
$pos = &$pos[$idx];
|
||||||
}
|
}
|
||||||
unset($pos[$idx]);
|
unset($pos[$last_idx]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
Loading…
Reference in New Issue
Block a user