<?php
/**
* @package VikWP - Libraries
* @subpackage adapter.html
* @author E4J s.r.l.
* @copyright Copyright (C) 2023 E4J s.r.l. All Rights Reserved.
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @link https://vikwp.com
*/
// No direct access
defined('ABSPATH') or die('No script kiddies please!');
/**
* Utility class for doing all sorts of odds and ends with arrays.
*
* @since 10.1.16
*/
final class ArrayHelper
{
/**
* Private constructor to prevent instantiation of this class.
*/
private function __construct()
{
}
/**
* Utility function to map an array to a string.
*
* @param array $array The array to map.
* @param string $innerGlue The glue (optional, defaults to '=') between the key and the value.
* @param string $outerGlue The glue (optional, defaults to ' ') between array elements.
* @param boolean $keepOuterKey True if final key should be kept.
*
* @return string
*/
public static function toString(array $array, $innerGlue = '=', $outerGlue = ' ', $keepOuterKey = false)
{
$output = array();
foreach ($array as $key => $item)
{
if (is_array($item))
{
if ($keepOuterKey)
{
$output[] = $key;
}
// This is value is an array, go and do it again!
$output[] = static::toString($item, $innerGlue, $outerGlue, $keepOuterKey);
}
else
{
$output[] = $key . $innerGlue . '"' . htmlspecialchars($item, ENT_COMPAT, 'UTF-8') . '"';
}
}
return implode($outerGlue, $output);
}
/**
* Method to determine if an array is an associative array.
*
* @param array $array An array to test.
*
* @return boolean
*/
public static function isAssociative($array)
{
if (is_array($array))
{
foreach (array_keys($array) as $k => $v)
{
if ($k !== $v)
{
return true;
}
}
}
return false;
}
}