<?php
/**
 * Generates a JavaScript script tag containing commands to store PHP array key-value pairs in local storage.
 * This function is designed to translate PHP associative array data into JavaScript local storage items.
 * It ensures that the array is associative and single-level before proceeding with the JavaScript code generation.
 * This is used when dumping session data into local storage for use by the client script.
 *
 * @param array $phpArray The associative array whose data will be converted into JavaScript local storage setItem calls.
 * @return string Returns a script tag with JavaScript code. If the input is not a valid single-level associative array,
 *                it returns a script with an error logged to the console.
 */
function generateScriptData(array $phpArray):string {
    // Check if the array is associative and single-level
    if (is_array($phpArray) && count($phpArray) > 0 && count(array_filter(array_keys($phpArray), 'is_string')) === count($phpArray)) {
        // Generate JavaScript code to save each array element to local storage
        $out = "<script>";
        foreach ($phpArray as $key => $value) {
            $escapedKey = addslashes(strval($key)); // Escape special characters in the key
            $escapedValue = addslashes(strval($value)); // Escape special characters in the value

            $out .= "localStorage.setItem('$escapedKey', '$escapedValue');";
        }
        $out.= "</script>";
    } else {
        $out = "<script>console.error('Invalid PHP array. Must be single-level and associative.');</script>";
    }
    return $out;
}