Dotted array

PHP Dotted Array

Sometimes you may need such a script, which lets you access to an array fields with string having dots as a depth delimiter. Let’s have an array:

$array = array(
	'women' => array(
		'cloths' => 'always lack',
		'money' => 'never enough',
		'mind' => 'calm',
	'men' => array(
		'cloths' => 'whatever',
		'money' => 'hidden',
		'mind' => 'reckless',

Normally it looks like this:

echo $array['men']['cloths'];

But for the code clarity and also other benefits you could use it this way:

$da = new Picios\Lib\DottedArray($array);
echo $da->get('men.cloths');

In both cases the output will be:


So what the hell is that for, if the code is longer and it requires using additional class?

Now the benefits

code clarity

Like I said earlier, the code clarity. It’s easier to read and write




easy controll

Moreover if you try to get to not existing array index with the code:

echo $array['women']['head'];

you’ll get a notice of undefined index. To prevent this, we use condition

if (array_key_exists('head', $array['women'])) {
	echo $array['women']['head'];


if ($da->get('women.head')) {
	echo $da->get('women.head');


you can always extend the basic functionality of a class.

class MySession extends Picios\Lib\DottedArray

	public function getUser()
		return $this->get('');

	public function isLoggedIn()
		return $this->get('') ? true : false;

and then use it

$mysession = new MySession($_SESSION);
if ($mysession->isLoggedIn()) {

Here’s a complete source code of the class. The snippet is a part of my own framework.
Use it well nerds


 * Get or Set array node using dot notation
 * @author picios
 * @copyright (c) 2016, picios

namespace Picios\Lib;

class DottedArray

	private $array = array();
	public function __construct($array)
		$this->array = $array;

	public function set($key, $value = true)
		$reference = & $this->getReference($key, true);
		$reference = $value;

	public function &get($key = false)
		if (!$key) {
			return $this->array;
		return $this->getReference($key);

	public function delete($key)

		$keys = explode('.', $key);
		if (count($keys) < 2) {
			return true;
		$lastKeyToDelete = array_pop($keys);
		$longKey = implode('.', $keys);
		$reference = & $this->getReference($longKey);

	protected function &getReference($key, $forWritting = false)
		$keys = explode('.', $key);
		$reference = & $this->array;
		foreach ($keys as $levelKey) {
			if ($forWritting || isset($reference[$levelKey])) {
				$reference = & $reference[$levelKey];
			} else {
				$result = null;
				return $result;

		return $reference;


You can also download it from

0 thoughts on “PHP Dotted Array

Comments are closed.