在本文中,我们将详细介绍从数组打印Html表的各个方面,并为您提供关于html输出数组的相关解答,同时,我们也将为您带来关于html的meta总结,html标签中meta属性使用介绍、AndroidH
在本文中,我们将详细介绍从数组打印 Html 表的各个方面,并为您提供关于html输出数组的相关解答,同时,我们也将为您带来关于 html 的 meta 总结,html 标签中 meta 属性使用介绍、Android Html 与客户端交互 ---- 1.)html 操作 activity、ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction、asp.net – Html.Partial vs Html.RenderPartial&Html.Action vs Html.RenderAction.任何人都可以描述不同之处的有用知识。
本文目录一览:- 从数组打印 Html 表(html输出数组)
- html 的 meta 总结,html 标签中 meta 属性使用介绍
- Android Html 与客户端交互 ---- 1.)html 操作 activity
- ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
- asp.net – Html.Partial vs Html.RenderPartial&Html.Action vs Html.RenderAction.任何人都可以描述不同之处
从数组打印 Html 表(html输出数组)
如何解决从数组打印 Html 表
我有一个这种格式的 csv。我正在尝试构建一个如下所示的 html 表。
Sem 1,Subj 1,75,100 ;
Sem 1,Subj 2,95,Subj 3,88,100 ;
Sem 2,85,100 ;
Sem 3,Subj 4,87,100 ;
Sem 4,84,100 ;
HTML 表格
Sem 1 Sem 2 Sem 3 Sem 4
Subj 1 75 X X 84
Subj 2 95 95 X X
Subj 3 88 85 X X
Subj 4 X X 87 X
// 这是我想出来的。当前仅打印标题
$datas = [
["Sem 1","Subj 1","75","100"],["Sem 1","Subj 2","95","Subj 3","88",["Sem 2","85",["Sem 3","Subj 4","87",["Sem 4","84","100"]];
$unique_coloum = [];
echo "<tr>";
foreach($datas as $data){
if(!in_array($data[0],$unique_coloum)){
echo "<td>".$data[0]."</td>";
array_push($unique_coloum,$data[0]);
}
}
echo "</tr>";
foreach($datas as $data){
#?
}
Sem 和 Subj 是 n。我被困在关于如何开始的循环逻辑上。任何帮助都会很棒。
解决方法
您可以使用下一个解决方案:
<?php
$datas = [
["Sem 1","Subj 1","75","100"],["Sem 1","Subj 2","95","Subj 3","88",["Sem 2","85",["Sem 3","Subj 4","87",["Sem 4","84","100"]
];
$columns = array_column($datas,0);
sort($columns);
// var_export($columns);
$res = array_reduce(
$datas,function($res,$data) {
if (!isset($res[$data[1]])) $res[$data[1]] = [];
$res[$data[1]][$data[0]] = $data[2];
return $res;
},$res
);
// var_export($res);
$output = "<tr><th>subject</th>" . implode(''</th><th>'',$columns) . ''</th></tr>'' . PHP_EOL;
foreach($res as $key => $row) {
$output .= "<tr><td>$key</td>";
foreach($columns as $col) {
$output .= $row[$col] ? "<td>$row[$col]</td>" : "<td>X</td>";
}
$output .= "</tr>" . PHP_EOL;
}
echo $output;
share PHP code
html 的 meta 总结,html 标签中 meta 属性使用介绍
引子
之前的我的博客中对于meta有个介绍,例如:http://www.haorooms.com/post/liulanq_think_ie 浏览器安全性想到的这篇文章,中间介绍了meta下面IE的一些属性,可以实现页面之间的过渡转换。已经SEO优化中有所提及。下面具体介绍一下meta的功能和使用。
前言
meta是html语言head区的一个辅助性标签。也许你认为这些代码可有可无。其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言,自动刷新并指向新的页面,实现网页转换时的动态效果,控制页面缓冲,网页定级评价,控制网页显示的窗口等!
html的meta总结
meta标签的组成:meta标签共有两个属性,它们分别是http-equiv属性和name属性,不同的属性又有不同的参数值,这些不同的参数值就实现了不同的网页功能。
1、name属性
name属性主要用于描述网页,与之对应的属性值为content,content中的内容主要是便于搜索引擎机器人查找信息和分类信息用的。
meta标签的name属性语法格式是:
<meta name="参数"content="具体的参数值">。
其中name属性主要有以下几种参数:
A、Keywords(关键字)
说明:keywords用来告诉搜索引擎你网页的关键字是什么。
举例:
<meta name="keywords"content="meta总结,html meta,meta属性,meta跳转">
B、description(网站内容描述)
说明:description用来告诉搜索引擎你的网站主要内容。
举例:
<meta name="description"content="haorooms博客,html的meta总结,meta是html语言head区的一个辅助性标签。">
C、robots(机器人向导)
说明:robots用来告诉搜索机器人哪些页面需要索引,哪些页面不需要索引。
content的参数有all,none,index,noindex,follow,nofollow。默认是all。
举例:
<meta name="robots"content="none">
具体参数如下:
信息参数为all:文件将被检索,且页面上的链接可以被查询;
信息参数为none:文件将不被检索,且页面上的链接不可以被查询;
信息参数为index:文件将被检索;
信息参数为follow:页面上的链接可以被查询;
信息参数为noindex:文件将不被检索,但页面上的链接可以被查询;
信息参数为nofollow:文件将被检索,但页面上的链接不可以被查询;
D、author(作者)
说明:标注网页的作者
举例:
<meta name="author"content="root,root@xxxx.com">
E、generator
<meta name="generator"content="信息参数"/>
meta标签的generator的信息参数,代表说明网站的采用的什么软件制作。
F、COPYRIGHT
<META NAME="COPYRIGHT"CONTENT="信息参数">
meta标签的COPYRIGHT的信息参数,代表说明网站版权信息。
G、revisit-after
<META name="revisit-after"CONTENT="7days">
revisit-after代表网站重访,7days代表7天,依此类推。
2、http-equiv属性
http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变量值。
meta标签的http-equiv属性语法格式是:
<meta http-equiv="参数"content="参数变量值">;
其中http-equiv属性主要有以下几种参数:
A、Expires(期限)
说明:可以用于设定网页的到期时间。一旦网页过期,必须到服务器上重新传输。
用法:
<meta http-equiv="expires"content="Fri,12Jan200118:18:18GMT">
注意:必须使用GMT的时间格式。
B、Pragma(cache模式)
说明:禁止浏览器从本地计算机的缓存中访问页面内容。
用法:
<meta http-equiv="Pragma"content="no-cache">
注意:这样设定,访问者将无法脱机浏览。
C、Refresh(刷新)
说明:自动刷新并指向新页面。
用法:
<meta http-equiv="Refresh"content="2;URL=http://www.haorooms.com"> //(注意后面的引号,分别在秒数的前面和网址的后面)
注意:其中的2是指停留2秒钟后自动刷新到URL网址。
D、Set-Cookie(cookie设定)
说明:如果网页过期,那么存盘的cookie将被删除。
用法:
<meta http-equiv="Set-Cookie"content="cookie value=xxx;expires=Friday,12-Jan-200118:18:18GMT;path=/">
注意:必须使用GMT的时间格式。
E、Window-target(显示窗口的设定)
说明:强制页面在当前窗口以独立页面显示。
用法:
<meta http-equiv="Window-target"content="_top">
注意:用来防止别人在框架里调用自己的页面。
F、content-Type(显示字符集的设定)
说明:设定页面使用的字符集。
用法:
<meta http-equiv="content-Type"content="text/html;charset=gb2312">
具体如下:
meta标签的charset的信息参数如GB2312时,代表说明网站是采用的编码是简体中文;
meta标签的charset的信息参数如BIG5时,代表说明网站是采用的编码是繁体中文;
meta标签的charset的信息参数如iso-2022-jp时,代表说明网站是采用的编码是日文;
meta标签的charset的信息参数如ks_c_5601时,代表说明网站是采用的编码是韩文;
meta标签的charset的信息参数如ISO-8859-1时,代表说明网站是采用的编码是英文;
meta标签的charset的信息参数如UTF-8时,代表世界通用的语言编码;
G、content-Language(显示语言的设定)
用法:
<meta http-equiv="Content-Language"content="zh-cn"/>
H、Cache-Control指定请求和响应遵循的缓存机制。
Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、on
ly-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下
Public指示响应可被任何缓存区缓存
Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
J、http-equiv="imagetoolbar"
<meta http-equiv="imagetoolbar"content="false"/>
指定是否显示图片工具栏,当为false代表不显示,当为true代表显示。
K、Content-Script-Type
<Meta http-equiv="Content-Script-Type"Content="text/javascript">
W3C网页规范,指明页面中脚本的类型。
L 页面跳转,只用于IE
具体请看 http://www.haorooms.com/post/liulanq_think_ie
Android Html 与客户端交互 ---- 1.)html 操作 activity
1. 何为 scheme 和 Uri
在 Android 中 scheme 是指 Uri 链接:之前的部分如 test://login scheme 即为 test。 可能很多人要为 URI 是怎么定义的呢?具体看 URI 的定义
- 英文愿意: An identifier is an object that can act as a reference to something that has identity. In the case of URI, the object is a sequence of characters with a restricted syntax.
- 翻译:
一个具有参考对象的可以唯一识别的标识符。在这种情况下,这个对象在有限的语法表达出有序的符号
2.Uri 的结构
test://video:8080/event?title="scheme"&url="www.xiaomi.com"
- scheme :test
- host :video
- port:8080
- path :/event
- query : titile ,url
3. 如果通过 H5 (url) 来启动相应的页面(activity)
String url="test://video:8080/event?title="scheme"&url="www.xiaomi.com" "
Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);
<activity android:name=".UriActivity">
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="test" android:host="video" />
</intent-filter>
</activity>
这样就可以在 UriActivity 中接收 url 跳转相应的动作以及数据。
> Uri data=getIntent().getData();
> data.getScheme();
> data.getHost();
> data.getPort();
> data.getPath();
> data.getQueryParameter("title");
4. 大量的不同的 scheme 跳转
如果我们在每个 activity 中配置 scheme ,host,path 显得特别麻烦。这个时候我们需要一个中转的 activity 来处理所有的 scheme 的跳转。根据相应的 host,path 来跳转到相应的 activity 做进一步处理。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
Uri data = intent.getData();
String host = data.getHost();
if(host.equals("list")){
if ("/near".equals(data.getPath())) {//yhouse://list/near
intentTransfer = new Intent(this, NearbyActivity.class);
} else if ("/new".equals(data.getPath())) {//yhouse://list/new
intentTransfer = new Intent(this, NewSkuActivity.class);
} else if ("/live".equals(data.getPath())) {
intentTransfer = new Intent(this, LiveActivity.class);
} else if ("/neighbor".equals(data.getPath())) {
intentTransfer = new Intent(this, NeighborActivity.class);
} else if ("/talent".equals(data.getPath())) {
intentTransfer = new Intent(this, TalentListActivity.class);
} else if ("/guide".equals(data.getPath())) {
intentTransfer = new Intent(this, GuideActivity.class);
} else if ("/experience".equals(data.getPath())) {
intentTransfer = new Intent(this, PlayerActivity.class);
}else if ("/latest".equals(data.getPath())) {
intentTransfer = new Intent(this, CikeActivity.class);
} else if ("/message".equals(data.getPath())) {
intentTransfer = new Intent(this, HomeActivity.class);
} else if ("/message/like".equals(data.getPath())) {
intentTransfer = new Intent(this, MessageDetailActivity.class);
} else if ("/message/comment".equals(data.getPath())) {
intentTransfer = new Intent(this, MessageDetailActivity.class);
} else if ("/message/follow".equals(data.getPath())) {
intentTransfer = new Intent(this, MessageDetailActivity.class);
} else if ("/message/system".equals(data.getPath())) {
intentTransfer = new Intent(this, SystemNoticeActivity.class);
} else {
intentTransfer = new Intent(this, HomeActivity.class);
}
}else if ("my-member".equals(host)) {
intentTransfer = new Intent(this, MemberInfoActivity.class);
} else if ("event".equals(host)) {
intentTransfer = new Intent(this, HuodongDetailActivity.class);
} else if ("booking-list".equals(host)) {
intentTransfer = new Intent(this, OrderManagerActivity.class);
} else if ("my-party".equals(host)) {
intentTransfer = new Intent(this, OrderManagerActivity.class);
intentTransfer.putExtra("type", OrderManagerActivity.PARTY);
} else if ("order".equals(host)) {
intentTransfer = new Intent(this, BookingManageDetailActivity.class);
} else if ("meal".equals(host)) {
intentTransfer = new Intent(this, MealDetailActivity.class);
}
}
你可能发现大量的 if else 语句不是非常好的选择。你可以采用 swith case 看不起来更清爽一些。但是使用 HashMap 将是我们比较好的选择。
HashMap 处理 首发定义一个枚举 SchemeEnum 和类 SchemeManager
>``` public enum ShemeEnum {
> Nearby("/near", NearbyActivity.class), NewSku("/new", NewSkuActivity.class),Live("/live", LiveActivity.class),
> NeighborActivity("/neighbor", NeighborActivity.class),Talent("/talent", NeighborActivity.class),Guide("/guide", GuideActivity.class),
> Player("/experience", PlayerActivity.class),News("/news", NewsActivity.class),Latest("latest",CikeActivity.class),
> Message("/message",NeighborActivity.class),Like("/message/like",NeighborActivity.class),
> Comment("/message/comment",NeighborActivity.class),Follow("/message/follow",NeighborActivity.class),
> System("/message/system",NeighborActivity.class),event("event",HomeActivity.class);
> private String key;
> private Class<?> value;
>
> private ShemeEnum(String key, Class<?> value) {
> this.value = value;
> this.key = key;
> }
>
> public String getKey() {
> return key;
> }
>
> public Class<?> getValue() {
> return value;
> }
> }
>```
> public class SchemeManager {
> private static HashMap<String, Class> map = new HashMap();
> private static SchemeManager scheme;
>
> public static HashMap initScheme() {
> ShemeEnum[] values = ShemeEnum.values();
> int len=values.length;
> for (int i = 0; i <len ; i++) {
> map.put(values[i].getKey(), values[i].getValue());
> }
> return map;
> }
>
> public static HashMap<String, Class> getMap() {
> return map;
> }
> }
scheme 转化的 Activity 将整理成
>```
> public class UriActivity extends Activity {
> private SApplication sApplication;
>
> @Override
> protected void onCreate(Bundle savedInstanceState) {
> super.onCreate(savedInstanceState);
> setContentView(R.layout.activity_test);
> Log.e("---UriActivity---", getClass().getName());
> Uri data = getIntent().getData();
> sApplication = (SApplication) getApplication();
> Intent intent = getIntent();
> if (intent == null || data == null) finish();
> Intent intentTransfer = null;
> String host = data.getHost();
> if (host.equals("list")) {
> intentTransfer = getIntentTransfer(data.getPath());
> } else {
> intentTransfer = getIntentTransfer(host);
> }
> if (intentTransfer != null) {
> intentTransfer.setData(data);
> startActivity(intentTransfer);
> }
> finish();
> }
>
> private Intent getIntentTransfer(String path) {
> Object clazz = sApplication.getMap().get(path);
> Intent intentTransfer;
> if (clazz != null) {
> intentTransfer = new Intent(this, (Class<?>) clazz);
> } else {
> intentTransfer = new Intent(this, HomeActivity.class);
> }
> return intentTransfer;
> }
> }
> ``
感觉 UriActivity 变的更简洁。每次新加 scheme 只需要在对应的枚举中添加相应的 scheme 和 Activity 名称既可以正常的跳转。
5. 拦截 uri 跳转
如果你想在跳转的途中或者我直接操作相应的某个操作(显示弹框,去分享等等) 你首先要重写 WebViewClient shouldOverrideUrlLoading(WebView view, String url); 来实现拦截的目的。
this.setWebViewClient(new WebViewClient() {
String failedUrl;
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//TODO 判断是否要拦截。如果需要做你的拦截之后的动作。
//不需要直接跳转(看第3条)。
return true;
}
});
}
这样通过 H5 来打开相应的 activity 并且传递参数的相关内容介绍完。下一节。我们将讲解 Activity 传递给 html 数据,以及调用相关的方法。
ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
1.Action、RenderAction加载办法的视图,履行Controller → Model → View的次序,然后把产生的页面带回到本来的View中再回传。而Partial、RenderPartial直接加载视图文件内容
2.Html.Partial可以直接供给用户控件名作为参数,而Html.Action须要有对应的Action,在Action内部返回PartailResult(即retun PartialView())。
3.对于简单的没有任何逻辑的用户控件,推荐应用Html.Partial;对于须要设置一些Model的用户控件,推荐应用Html.Action。当然,有Model数据也是可以应用Html.Partial办法的,可以看办法的重载。
4.Html.Partial与Html.Action有啥区别呢?区别就是,Html.Partial只有一个视图,而Html.Action除了视图,还真的有个Action跟它对应,所以,Html.Action功能比Html.Partial要强。
如何调用这个Html.Partial
//1、以视图名使用当前文件夹下的视图(如果没有找到,则搜索 Shared 文件夹)
@Html.Partial(
"_test"
)
//加载对应文件 /Views/Product/_test.cshtml
//2、依据应用根路径定位视图// 以 "/" 或 "~/" 开头的路径代表应用根路径
@Html.Partial(
"~/Views/Product/_test.cshtml"
)
@Html.Partial(
"/Views/Product/_test2.cshtml"
)
//3、加载其他目录的 视图文件
//注意:需要复制views中的web.config 到template目录,否则会提示 "/template/A.cshtml”处的视图必须派生自 WebViewPage 或 WebViewPage<TModel>"
@Html.Partial(
"/template/A.cshtml"
)
asp.net – Html.Partial vs Html.RenderPartial&Html.Action vs Html.RenderAction.任何人都可以描述不同之处
Html.Partial and Html.RenderPartial Html.Action and Html.RenderAction
解决方法
Html.Partial使用已创建的模型(或者可以在没有模型的情况下调用)来渲染指定的视图.
何时使用一个而不是另一个?如果您已有模型并且只想拥有可重复使用的视图,请选择Html.Partial.如果你看到某个部分值得拥有自己的模型和动作,那么使用Html.Action可能是有意义的.
这个问题在this article中有更详细的讨论,你在上面看到的基本上是它的摘录.
关于从数组打印 Html 表和html输出数组的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于 html 的 meta 总结,html 标签中 meta 属性使用介绍、Android Html 与客户端交互 ---- 1.)html 操作 activity、ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction、asp.net – Html.Partial vs Html.RenderPartial&Html.Action vs Html.RenderAction.任何人都可以描述不同之处的相关信息,请在本站寻找。
本文标签: