Доступ к элементу массива PHP с функцией?

Я работаю над программой, которая использует внутренние указатели массива PHP для итерации по многомерному массиву. Мне нужно получить элемент из текущей строки, и я делал это так:

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

Тем не менее, я бы предпочел использовать что-то вроде:

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

Я надеюсь, что есть функция, которую я пропустил при проверке документации, которая позволила бы мне получить доступ к элементу следующим образом:

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

или

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

Какие-либо предложения?

Related of "Доступ к элементу массива PHP с функцией?"

Я очень сомневаюсь, что существует такая функция, но писать тривиально

 function getvalue($array, $key) { return $array[$key]; } 

Изменить: Начиная с PHP 5.4, вы можете индексировать элементы массива непосредственно из выражений функций current($arr)['item'] .

Вы еще пробовали использовать один из классов итераторов ? Там может быть что-то, что делает именно то, что вы хотите. Если нет, вы можете получить то, что хотите, расширив класс ArrayObject.

Эта функция может быть немного длинной, но я использую ее все время, особенно в таких сценариях, как:

 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'); 

Если это не сработает, как создается ваш многомерный массив? Может помочь var_dump ().

 $subkey = 'B'; $arr = array( $subkey => array( 'AB' => 'A1', 'AC' => 'A2' ) ); echo current($arr[$subkey]); next($arr[$subkey]); echo current($arr[$subkey]); 

Я часто использую

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

вместо

Следующий ($ обр) / ток ($ обр)