【PHP】ドット連結記法で配列に値をセット出来るメソッド。

laravelのコアファイルより発掘。

function array_set(&$array, $key, $value)
{
	if (is_null($key)) return $array = $value;

	$keys = explode('.', $key);

	while (count($keys) > 1)
	{
		$key = array_shift($keys);

		if ( ! isset($array[$key]) or ! is_array($array[$key]))
		{
			$array[$key] = array();
		}

		$array =& $array[$key];
	}

	$array[array_shift($keys)] = $value;
}

使い方は下記の通り

// $array['user']['name'] にセットしたい場合
array_set($array, 'user.name', 'Value');

// $array['user']['name']['first'] にセットしたい場合
array_set($array, 'user.name.first', 'Value');