簡體   English   中英

更改 PHP 數組的格式以允許在 smarty tempate 中循環

[英]Changing the format of a PHP array to allow looping in a smarty tempate

第一篇文章 - 幾天來一直在研究和掙扎,但我無法解決以下問題,我添加了第二個 Select 查詢來計算從起點到一定范圍內的目的地的距離我得到 output 好的但不是在我可以使用的 fromat 中 - 我有一個現有的腳本,它輸出一個數組並將其傳遞給一個 smarty 模板 - 這工作正常,所以我用它來調試我第一次嘗試中出了什么問題。

我正在使用printf("<pre>%s</pre>", print_r($myarrayname, true)); 調試並具有以下 output

Array
(
    [firm] => company name 1
    [loc1] => Inverness
    [distance] => 0.800791320271485
)

Array
(
    [firm] => company name 2
    [loc1] => Inverness
    [distance] => 0.972151789782665
)

Array
(
    [firm] => company name 3
    [loc1] => Inverness
    [distance] => 1.04042401681383
)

等等等等,但是我已知的工作 output 用一個索引生成后續並將 [firm] 和 [loc1] 組合在一起(但省略索引名稱)

Array
(
    [html] => company name 1 Inverness
)

Array
(
    [html] => company name 2 Inverness
) 

Array
(
    [html] => company name 3 Inverness 
)

誰能建議我如何將此數組轉換為顯示的格式。 希望這里有足夠的信息 - 不想用不相關的東西濺到頁面上

這是代碼

// Start of Nearby query
$lat = trim($_REQUEST['lat']);
$lng = trim($_REQUEST['lng']);

$lat = (!empty($lat)? $lat : 57.45666); // starting point Latitude
$lng = (!empty($lng)? $lng : -4.22137);// starting point Longitude

$HelpQuery = sprintf("SELECT firm, loc1, ( 3959 * acos( cos( radians( %s ) ) * cos( radians( lat ) ) * cos( radians( longit ) - radians( %s ) ) + sin( radians( %s ) ) * sin( radians( lat ) ) ) ) AS distance FROM $my_table WHERE state='apr'  HAVING distance > 0.01  ORDER BY distance LIMIT 1,5",$lat,$lng,$lat);

$HelpResult = mysql_query($HelpQuery);
$result = array();
$result['html'] = "";

if($HelpResult)
{
    while($Helprow = mysql_fetch_assoc($HelpResult))
            printf("<pre>%s</pre>", print_r($Helprow, true)); // Prints on     3 lines each one having its own index- needs combiing to one index

    {
            $Helprow['distance'] = round($Helprow['distance'],2);
            $result['html'][] = $Helprow; 
    }
}
else
{
    $result['html'] = "Error";
}
// End of listing nearby  MOD

按照建議和指針,我現在已經用下面粘貼的新代碼解決了這個問題。 output 可以在頁面底部找到在給定距離內顯示記錄的源。 源緯度和經度作為變量被拉到每個頁面上。

// Start of Nearby Accommodation query
$lat =  $vs_current_listing['lat'];
$lng = $vs_current_listing['longit'];


$firm_loop = sprintf("SELECT firm, loc1, id, ROUND( 3959 * acos( cos( radians( %s ) ) * cos( radians( lat ) ) * cos( radians( longit ) - radians( %s ) ) + sin( radians( %s ) ) * sin( radians( lat ) ) ) ,2) AS distance FROM $my_table WHERE state='apr' AND record_set='xxxx' HAVING distance BETWEEN 0.01 and 20  ORDER BY distance LIMIT 1,20",$lat,$lng,$lat);
$firm_loop = mysql_query($firm_loop);
for($x=0;$x<mysql_num_rows($firm_loop);$x++){ 
 $f_img = mysql_fetch_assoc($firm_loop);  
$f_firm[mod_firm]  = str_replace(" ","_",$f_img[firm]);
$vs_listfirm[$x][html] = "<a href=\"./$f_firm[mod_firm]-$f_img[id].html\"    title='$f_img [firm]'>" .$f_img[firm]." - ".$f_img[loc1]."  - ".$f_img[distance]."  miles  </a>"; 
}
$tpl-> assign('vs_listfirm',$vs_listfirm); 
// End of listing nearby  MOD

smarty模板顯示代碼的部分如下圖所示,顏色fonts和格式已被省略以顯示基本代碼。

{html_table_adv loop=$vs_listfirm cols=2 inner=cols table_attr='width=90% border=0 cellpadding=0 cellspacing=1'} [[html]] {/html_table_adv} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM