用函数访问PHP数组元素?

时间:2008-12-28 18:54:31

标签: php arrays

我正在开发一个程序,它使用PHP的内部数组指针来迭代多维数组。我需要从当前行获取一个元素,我一直这样做:

$arr[key($arr)]['item']

但是,我更喜欢使用类似的东西:

current($arr)['item'] // invalid syntax

我希望有一个功能,我在扫描文档时会错过这些功能,这样我就可以像这样访问元素:

getvalue(current($arr), 'item')

current($arr)->getvalue('item')

有什么建议吗?

5 个答案:

答案 0 :(得分:12)

我非常怀疑有这样的功能,但是编写

是微不足道的
function getvalue($array, $key)
{
  return $array[$key];
}

编辑:从PHP 5.4开始,您可以直接从函数表达式current($arr)['item']索引数组元素。

答案 1 :(得分:1)

您是否尝试过使用其中一个iterator classes了?那里可能有一些东西完全符合你的要求。如果没有,您可以通过扩展ArrayObject类来获得所需的内容。

答案 2 :(得分:0)

这个功能可能有点长,但是我一直都在使用它,特别是在如下的情况下:

if (array_key_exists('user', $_SESSION) === true)
{
    if (array_key_exists('level', $_SESSION['user']) === true)
    {
        $value = $_SESSION['user']['level'];
    }

    else
    {
        $value = 'DEFAULT VALUE IF NOT EXISTS';
    }
}

else
{
    $value = 'DEFAULT VALUE IF NOT EXISTS';
}

转向:

Value($_SESSION, array('user', 'level'), 'DEFAULT VALUE IF NOT EXISTS');

这是功能:

function Value($array, $key = 0, $default = false)
{
    if (is_array($array) === true)
    {
        if (is_array($key) === true)
        {
            foreach ($key as $value)
            {
                if (array_key_exists($value, $array) === true)
                {
                    $array = $array[$value];
                }

                else
                {
                    return $default;
                }
            }

            return $array;
        }

        else if (array_key_exists($key, $array) === true)
        {
            return $array[$key];
        }
    }

    return $default;
}

PS:您也可以使用一维数组,如下所示:

Value($_SERVER, 'REQUEST_METHOD', 'DEFAULT VALUE IF NOT EXISTS');

答案 3 :(得分:-1)

如果这不起作用,你的多维数组是如何组成的? var_dump()可能会有所帮助。

$subkey = 'B';
$arr = array(
    $subkey => array(
        'AB' => 'A1',
        'AC' => 'A2'
    )
);


echo current($arr[$subkey]);
next($arr[$subkey]);
echo current($arr[$subkey]);

答案 4 :(得分:-1)

我经常使用

foreach ($arr as $key=>$val) {
   $val['item'] /*$val is the value of the array*/
   $key         /*$key is the key used */
}

而不是

下($ ARR)/电流($ ARR)