这可以通过一些简单的概念来实现,例如loop,
递归函数和静态变量。
静态变量的使用在这里非常重要,因为它们记住了函数最后一次调用中的最后修改值。
在循环中,我们检查当前遍历的值是否为数组。
如果它是一个数组,我们用当前键修改前缀并调用递归函数和。
如果没有,我们只是简单地将前缀与当前密钥连接起来。
试试这个:
$data = ['title' => 'Title', 'ajax' => ['url' => '/ajax/url', 'timeout' => 10, 'params' => ['param-1' => 'Param 1']]];
function formatter($data = array()) {
static $prefix = 'data-';
static $attr_string = '';
foreach($data as $key => $value) {
if (is_array($value)) {
$prefix .= $key.'--';
formatter($value);
} else {
$attr_string .= $prefix.$key.'="'.$value.'" ';
}
}
return $attr_string;
}
echo formatter($data);
输出:
data-title="Title" data-ajax--url="/ajax/url" data-ajax--timeout="10" data-ajax--params--param-1="Param 1"