PHP Smarty使用assign()方法传递变量。

INDEX.TPL的.<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org... INDEX.TPL的.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{ $title }</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<link rel="stylesheet" href="../css/style.css" />
</head>
<body>
购书信息:<br>
图书类别:{ $arr[0] }<br />
图书名称:{ $arr.name }<br />
图书单价:{ $arr.unit_price.price }/{ $arr.unit_price.unit }
</body>
</html>

INDEX.php的
<?php
include_once("../config.php");
$arr = array('computerbook','name' => 'PHP从入门到精通','unit_price' => array('price' => '¥65.00','unit' => '本'));
$smarty->assign('title','使用Smarty读取数组');
$smarty->assign('arr',$arr);
$smarty->display('02/index.tpl');
?>

config.php的
<?php
/* 定义服务器的绝对路径 */
define('BASE_PATH','D:\xampp\htdocs\\');
/* 定义Smarty目录的绝地你路径 */
define('SMARTY_PATH','26\smarty\\');
/* 加载Smarty类库文件 */
require BASE_PATH.SMARTY_PATH.'Smarty.class.php';
/* 实例化一个Smarty对象 */
$smarty = new Smarty;
/* 定义各个目录的路径 */
$smarty->template_dir = BASE_PATH.SMARTY_PATH.'templates/';
$smarty->compile_dir = BASE_PATH.SMARTY_PATH.'templates_c/';
$smarty->config_dir = BASE_PATH.SMARTY_PATH.'configs/';
$smarty->cache_dir = BASE_PATH.SMARTY_PATH.'cache/';
/*定义定界符号*/
//$smarty->left_delimiter = '<{';
//$smarty->right_delimiter = '}>';
?>

运行结果:购书信息:
图书类别:{ $arr[0] }
图书名称:{ $arr.name }
图书单价:{ $arr.unit_price.price }/{ $arr.unit_price.unit }

本来运行结果应该是
图书类别:computerbook。。。。。

求教下,到底是哪出错了。。。

初学PHP,实在不是很明白,望详细点。谢~~~~~~~~~~~~
展开
 我来答
dailei6200
推荐于2018-04-12 · 超过15用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:42.5万
展开全部
注意你自己的代码
/*定义定界符号*/
//$smarty->left_delimiter = '<{';
//$smarty->right_delimiter = '}>';
这里指定了定界符号了 index.tpl中用的定界符号应该和这里一致
图书类别:<{ $arr[0] }>
图书名称:<{ $arr.name }>
图书单价:<{ $arr.unit_price.price }>/<{ $arr.unit_price.unit }>
wizarot
2012-05-08 · TA获得超过187个赞
知道小有建树答主
回答量:330
采纳率:100%
帮助的人:224万
展开全部
建议你用
var_dump($arr);
在php这边看一下数组结构
模板那边其实 $arr.name 就是调用数组的那个name索引。
smarty引擎没有$arr[0]的使用方法。
建议你把php这边的 $arr = array('computerbook','name' => 'PHP从入门到精通','unit_price' => array('price' => '¥65.00','unit' => '本'));
改成其他的,别这样混着使用。
$arr = array('type'=>'computerbook','name' => 'PHP从入门到精通','unit_price' => array('price' => '¥65.00','unit' => '本'));
追问
还是不太明白了,初学PHP T_T、

但这行:'name' => 'PHP从入门到精通','unit_price' => array('price' => '¥65.00','unit' => '本'));
图书名称:{ $arr.name }
图书单价:{ $arr.unit_price.price }/{ $arr.unit_price.unit }

为什么输出也会是这样的了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清荣隐士
2012-05-07 · 超过43用户采纳过TA的回答
知道答主
回答量:195
采纳率:100%
帮助的人:98.3万
展开全部
购书信息:<br>
图书类别:{$arr[0]}<br />
图书名称:{$arr.name}<br />
图书单价:{$arr.unit_price.price}/{$arr.unit_price.unit}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
m38888
2012-05-07 · TA获得超过197个赞
知道小有建树答主
回答量:426
采纳率:0%
帮助的人:314万
展开全部
你所求助的团队目前不擅长此问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友79ed758
2012-05-08
知道答主
回答量:35
采纳率:0%
帮助的人:5.1万
展开全部
include_once("../config.php");
包含文件包含错误了
追问
额,那请问下应该怎么改了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式