Insert element into an array at a specific key location.

Paramètres

array $input_array: The original array.

array $insert: The element that is getting inserted; array(key => value).

string $target_key: The key name.

int $location: After is 1 , 0 is replace, -1 is before.

Return value

array The new array with the element merged in.

2 calls to advagg_insert_into_array_at_key()
advagg_relocate_js_post_alter dans advagg_relocate/advagg_relocate.module
Alter the js array.
advagg_relocate_js_script_rewrite dans advagg_relocate/advagg_relocate.module
Add external.

Fichier

./advagg.module, line 6146

Code

function advagg_insert_into_array_at_key(array $input_array, array $insert, $target_key, $location = 1) {
    $output = array();
    $new_value = reset($insert);
    $new_key = key($insert);
    foreach ($input_array as $key => $value) {
        if ($key === $target_key) {
            // Insert before.
            if ($location == -1) {
                $output[$new_key] = $new_value;
                $output[$key] = $value;
            }
            // Replace.
            if ($location == 0) {
                $output[$new_key] = $new_value;
            }
            // After.
            if ($location == 1) {
                $output[$key] = $value;
                $output[$new_key] = $new_value;
            }
        }
        else {
            // Pick next key if there is an number collision.
            if (is_numeric($key)) {
                while (isset($output[$key])) {
                    $key++;
                }
            }
            $output[$key] = $value;
        }
    }
    // Add to array if not found.
    if (!isset($output[$new_key])) {
        // Before everything.
        if ($location == -1) {
            $output = $insert + $output;
        }
        // After everything.
        if ($location == 1) {
            $output[$new_key] = $new_value;
        }
    }
    return $output;
}