首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将关联数组映射到html元素属性?

如何将关联数组映射到html元素属性?
EN

Stack Overflow用户
提问于 2013-08-06 21:28:16
回答 10查看 13K关注 0票数 21

我正在构建一个基本的表单构建类来加快我的工作流程,并且我希望能够采用如下的属性数组:

$attributes = array(
   "type"         => "text",
   "id"           => "contact-name",
   "name"         => "contact-name",
   "required"     => true
);

并将其映射到html元素的属性:

<input type="text" id="contact-name" name="contact-name" required />

编辑:

实现上述目标的最干净的方法是什么?我确信我可以通过一个循环和一些连接来拼凑一些东西,但我感觉printf或类似的东西可以用一种更优雅的方式完成。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-08-06 21:35:07

我认为这应该可以做到:

$result = '<input '.join(' ', array_map(function($key) use ($attributes)
{
   if(is_bool($attributes[$key]))
   {
      return $attributes[$key]?$key:'';
   }
   return $key.'="'.$attributes[$key].'"';
}, array_keys($attributes))).' />';
票数 24
EN

Stack Overflow用户

发布于 2015-12-03 18:39:50

$attr = array(
    'type'     => 'text',
    'id'       => 'contact-name',
    'name'     => 'contact-name',
    'required' => true,
    'value'    => '" <b>html</b> \'test\''
);

echo '<input '. implode(' ', array_map(
    function ($k, $v) { return $k .'="'. htmlspecialchars($v) .'"'; },
    array_keys($attr), $attr
)) .' />';
票数 12
EN

Stack Overflow用户

发布于 2013-08-06 21:31:49

一些类似的东西(一个非常简单的方法--当然您可以对其进行扩展,但这将为您提供基本的功能):

$output = "<input ";
foreach($attributes as $key => $value){
    $output .= $key.'="'.$value.'" ';
}
$output .= "/>";
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18081625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档