array(6) {
  [1]=>
  array(2) {
    ["city"]=>
    string(29) "Chongqing>>Yichang,Downstream"
    ["city_id"]=>
    string(1) "3"
  }
  [2]=>
  array(2) {
    ["city"]=>
    string(27) "Chongqing>>Wuhan,Downstream"
    ["city_id"]=>
    string(1) "4"
  }
  [3]=>
  array(2) {
    ["city"]=>
    string(30) "Chongqing>>Shanghai,Downstream"
    ["city_id"]=>
    string(1) "5"
  }
  [4]=>
  array(2) {
    ["city"]=>
    string(27) "Yichang>>Chongqing,Upstream"
    ["city_id"]=>
    string(1) "6"
  }
  [5]=>
  array(2) {
    ["city"]=>
    string(25) "Wuhan>>Chongqing,Upstream"
    ["city_id"]=>
    string(1) "7"
  }
  [6]=>
  array(2) {
    ["city"]=>
    string(28) "Shanghai>>Chongqing,Upstream"
    ["city_id"]=>
    string(1) "8"
  }
}
6
这个数组,最后的6是echo count($a);的结果,明确是6个。MVC控制页面代码如下//$a=  cruise::city_list();
//var_dump($a);echo count($a);
//exit;
template::assign('city_list',cruise::city_list());
template::display('cruise-schedule.html');将测试代码注释掉,我们来看看smarty部分的显示效率。变量city_list。smarty部分代码_{section name=city loop=$city_list}
<input onchange="givesearchvalue(this)" type="radio" name='city_id' value="_{$city_list[city].city_id}">1_{$city_list[city].city}<br>
_{/section}
(打1是为了突出这些数据是通过循环得出的)
页面显示效果出乎意料。
多了第一个空白的,实际上大家算算,还差key6的数据。
<input type="radio" value="" name="city_id" onchange="givesearchvalue(this)"/>
1
<br/>
<input type="radio" value="3" name="city_id" onchange="givesearchvalue(this)"/>
1Chongqing>>Yichang,Downstream
<br/>
<input type="radio" value="4" name="city_id" onchange="givesearchvalue(this)"/>
1Chongqing>>Wuhan,Downstream
<br/>
<input type="radio" value="5" name="city_id" onchange="givesearchvalue(this)"/>
1Chongqing>>Shanghai,Downstream
<br/>
<input type="radio" value="6" name="city_id" onchange="givesearchvalue(this)"/>
1Yichang>>Chongqing,Upstream
<br/>
<input type="radio" value="7" name="city_id" onchange="givesearchvalue(this)"/>
1Wuhan>>Chongqing,Upstream
<br/>

解决方案 »

  1.   

    原因是section循环的数组必须是0开始的……这点,手册描述不够详细,残念啊……
      

  2.   

    基本上所有的编程语言如Java/C#/PHP等,集合下标都是从0开始的。如果你有其它语言的开发经验就不会犯这种错误了。
      

  3.   

    section循环0开始的递增数组
    foreach可循环索引和关联数组
      

  4.   


    所有的循环都是以数字索引开始的,我本以为section还支持关联索引的……
      

  5.   

    section循环0开始的递增数字索引数组,一般用来对付那些搜索mysql得到的数据集。