⑴ thinkphp <volist>標簽 循環輸出表格 怎麼動態設定循環次數呢
在使用ThinkPHP的volist標簽時,單重循環是比較常用的,但有時候需要用到多重嵌套循環。
方法步驟:
Action代碼:
publicfunctionindex(){
$prod=I("get.prod_en");
$id=I("get.id",0,"int");
if($prod==""){
$serviceProct=array();//多重循環遍歷的數組
//數據保存在兩張表中,這里通過循環初始化$serviceProct數組
$service=M("proct_class")->order("oidASC")->select();
for($i=0;$i<count($service);$i++)
{
array_push($serviceProct,array("srvName"=>$service[$i]["pc_cn"],"proct"=>M("proct")->where("prod_class_id=".$service[$i]["pcid"])->order("oidASC")->select()));
}
//如果要在模板中輸出變數,必須在在控制器中把變數傳遞給模板,系統提供了assign方法對模板變數賦
值,無論何種變數類型都統一使用assign賦值。
$this->assign("serviceProct",$serviceProct);
$this->display();
}else{
if($id>0){
$this->display("detail");
}else{
$this->assign('prod_en',$prod);
$clsList=M("question_class")->order("oidASC")->select();
$this->assign('clsList',$clsList);
$qusList=M("question")->order("oidASC")->select();
$this->assign('qusList',$qusList);
$this->display("list");
}
}
模板代碼:
<volistname="serviceProct"id="sp"key="i">
<dlclass="dlistodd">
<dt>{$sp.srvName}</dt>
<volistname="sp.proct"id="pd"key="j">
<dd><ahref="/index.php/question?prod_en={$pd.prod_en}">{$pd.prod_cn}</a></dd>
<ifcondition="$jltcount($sp['proct'])">
<dd>|</dd>
</if>
</volist>
<ifcondition="count($sp['proct'])EQ0">
<dd> </dd>
</if>
</dl>
</volist>
當使用多重嵌套循環時,需要為每一個volist指定key值,通過
<if condition="$j lt count($sp['proct'])">
判斷是否為數組中的最後一個元素。
⑵ php中foreach怎麼控制循環次數
foreach的對象是一個數組,默認是循環出數組中的所有數據就結束。
如果你只想取出數組中的前幾個(控制循環次數),可以加一個變數控制次數;
$i = 0;
$maxnum = 10;
foreach($array as $v) {
echo $v;
if($++ > $maxnum) {
break();
}
}
⑶ 用php寫出代碼:3,6,7,1,8,2,9,4,5,0按照從小到大的順序輸出數組的值。
這個問題,可以採用經典的冒泡排序。冒泡排序的過程如下:
1.比較相鄰的元素。如果第一個比第二個大,就交換順序。
2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。最後的元素會是最大的數。
3.針對所有的元素重復以上的步驟,除了最後一個。
4.持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
這個過程在轉化成代碼方式的思路為:
每次從最開始的一對相鄰元素比較,到結尾的一對元素比較完畢,可以看做一個完整的步驟,代碼表示如下:
for ($j = 0;$j < count($arr)-1;$j++)// 每一次循環表示一次比較和交換的過程。
{
if ($arr[$j]>$arr[$j+1])
{
$tmp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
}
}
2.每次重新開始上一步驟都要比上一步少比較最後一個元素(因為上一步最後一個元素已經最大),這時需要增加一個外層循環來控制每次比較元素的個數。代碼如下:
for($i = 0;$i < count($arr);$i++)// 每一次外層循環表示從頭到尾執行了一次兩兩互相比較和交換。
{
for ($j = 0;$j < count($arr)-$i-1;$j ++)// 每一次內層循環表示一次比較和交換的過程。
{
if ($arr[$j]>$arr[$j+1])
{
$tmp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
}
}
}
完成過程代碼如下:
⑷ php取出多維數組重復的值
$arr = array(
array(
array(
"stocknotifyId" => 1,
"sku" => '13809_BL_37',
"email" => '[email protected]'
),
array(
"stocknotifyId" => 3,
"sku" => '13809_BL_37',
"email" => '[email protected]'
),
array(
"stocknotifyId" => 5,
"sku" => '13809_BL_37',
"email" => '[email protected]'
)
),
array(
array(
"stocknotifyId" => 2,
"sku" => '13809_B_39',
"email" => '[email protected]'
)
),
array(
array(
"stocknotifyId" => 4,
"sku" => '13809_BL_39',
"email" =>'[email protected]'
)
)
);
$re = array();
foreach($arr as $a) {
foreach ($a as $v) {
$tmp_v = $v;
unset($tmp_v['email']);
if(isset($re[$v['email']])) {
$re[$v['email']][] = $tmp_v;
}else{
$re[$v['email']] = array($tmp_v);
}
}
}
print_r($re);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!-- output -->
Array
(
[[email protected]] => Array
(
[0] => Array
(
[stocknotifyId] => 1
[sku] => 13809_BL_37
)
[1] => Array
(
[stocknotifyId] => 2
[sku] => 13809_B_39
)
)
[[email protected]] => Array
(
[0] => Array
(
[stocknotifyId] => 3
[sku] => 13809_BL_37
)
[1] => Array
(
[stocknotifyId] => 4
[sku] => 13809_BL_39
)
)
[[email protected]] => Array
(
[0] => Array
(
[stocknotifyId] => 5
[sku] => 13809_BL_37
)
)
)
⑸ php如何統計一個數組中相同元素的個數
簡單的循環即可,選出重復(出現次數大於等於2)的元素並統計每個重復元素出現的次數:
php中的 array_count_values() 函數可以實現
array_count_values() 函數用於統計數組中所有值出現的次數。
本函數返回一個數組,其元素的鍵名是原數組的值,鍵值是該值在原數組中出現的次數。
array_count_values(array)
例如:
<?php
$a=array("Cat","Dog","Horse","Dog");
print_r(array_count_values($a));
?>
輸出:
Array ( [Cat] => 1 [Dog] => 2 [Horse] => 1 )
(5)php數組重復次數擴展閱讀:
php統計數組元素個數
count():對數組中的元素個數進行統計;
sizeof():和count()具有同樣的用途,這兩個函數都可以返回數組元素個數,得到一個常規標量變數中的元素個數。
如果傳遞給這個函數的數組是一個空數組,或者是一個沒有經過設定的變數,返回的數組元素個數就是0;
array_count_value():統計每個特定的值在數組$array中出現過的次數;
如:
$array=array(4,5,1,2,3,1,2,1);
$ac=array_count_value($array);
將創建一個名為$ac數組,該數組包括:
關鍵字 值
4 1
5 1
1 3
2 2
3 1