protected function doExpandArrayProperties(
        $data,
        $array,
        $parent_keys = '',
        $reference_data = null
    ) {
        foreach ($array as $key => $value) {
            // Boundary condition(s).
            if (is_null($value) || is_bool($value)) {
                continue;
            }
            // Recursive case.
            if (is_array($value)) {
                $this->doExpandArrayProperties($data, $value, $parent_keys . "$key.", $reference_data);
            } // Base case.
            else {
                $this->expandStringProperties($data, $parent_keys, $reference_data, $value, $key);
            }
        }
    }
protected function doExpandArrayProperties(
        $data,
        $array,
        $parent_keys = '',
        $reference_data = null
    ) {
        foreach ($array as $key => $value) {
            // Boundary condition(s).
            if (is_null($value) || is_bool($value)) {
                continue;
            }
            // Recursive case.
            if (is_array($value)) {
                $this->doExpandArrayProperties($data, $value, $parent_keys . "$key.", $reference_data);
            } // Base case.
            else {
                $this->expandStringProperties($data, $parent_keys, $reference_data, $value, $key);
            }
        }
    }
protected function doExpandArrayProperties ( $ data , $ array , $ parent_keys = '' , $ reference_data = null ) { foreach ( $ array as $ key => $ value ) { // Boundary condition(s). if ( is_null ( $ value ) || is_bool ( $ value ) ) { continue ; } // Recursive case. if ( is_array ( $ value ) ) { $ this -> doExpandArrayProperties ( $ data , $ value , $ parent_keys . "$key." , $ reference_data ) ; } // Base case. else { $ this -> expandStringProperties ( $ data , $ parent_keys , $ reference_data , $ value , $ key ) ; } } }
Performs the actual property expansion.

@param Data $data
A data object, containing the $array.
@param array $array
The original, unmodified array.
@param string $parent_keys
The parent keys of the current key in dot notation. This is used to
track the absolute path to the current key in recursive cases.
@param Data|null $reference_data
A reference data object. This is not operated upon but is used as a
reference to provide supplemental values for property expansion.
Performs the actual property expansion .