从数组

时间:2016-09-15 14:38:55

标签: php jquery

这是我的第一个问题,所以我将从一个无用的位开始。我想说谢谢,我现在已经成为堆栈溢出潜伏者了一段时间,jQuery和PHP中的不同问题上的很多贡献者帮助我甚至不知道他们纠正了我,所以我想开始感谢你到堆栈溢出的每个贡献者。

目前我正在尝试为网站编写一个简单的比较工具。在荷兰,人们可以选择自己的电力公司,为他们提供电力/燃气。由于价格差异,人们会试图找到最便宜的。

我正在组合一个PHP数组并使用'for each'来生成HTML内容。该数组看起来像这样:

<?php
$leverancierarray = array(
// Iedere array hieronder is één leverancier.
  array (
    'leverancier' => 'Nuon',
    'korting_tekst' => '100 euro korting',
    'korting_value' => 100,
    'contract_duur' => '12 maanden', // Aantal maanden in tekst
    'contract_duur_value' => 12, // Aantal maanden
    'tarief_enkel_stroom' => 0.18, // In cent ipv euro's. Makkelijker om de komma te berekenen
    'tarief_dubbel_stroom' => 0.21, // In cent ipv euro's. Makkelijker om de komma te berekenen 
    'tarief_piek_stroom' => 0.21, // In cent ipv euro's. Makkelijker om de komma te berekenen       
    'tarief_gas' => 0.60, // In cent ipv euro's. Makkelijker om de komma te berekenen
    'tarief_vastrecht_stroom' => 1.05, // In euro's.
    'tarief_vastrecht_gas' => 1.05, // In euro's.   
    'tarief_transport_stroom' => 350, // In euro's.
    'tarief_transport_gas' => 124, // In euro's.
    'heffingskorting' => 347, // heffingskorting.
  ),
  array (
    'leverancier' => 'Qurrent',
    'korting_tekst' => '100 euro korting',
    'korting_value' => 75,
    'contract_duur' => '12 maanden', // In tekst
    'contract_duur_value' => 12, // Aantal maanden
    'tarief_enkel_stroom' => 0.19, // In cent ipv euro's. Makkelijker om de komma te berekenen
    'tarief_dubbel_stroom' => 0.21, // In cent ipv euro's. Makkelijker om de komma te berekenen 
    'tarief_piek_stroom' => 0.21, // In cent ipv euro's. Makkelijker om de komma te berekenen       
    'tarief_gas' => 0.58, // In cent ipv euro's. Makkelijker om de komma te berekenen
    'tarief_vastrecht_stroom' => 5.75, // In euro's.
    'tarief_vastrecht_gas' => 5.75, // In euro's.   
    'tarief_transport_stroom' => 350, // In euro's.
    'tarief_transport_gas' => 124, // In euro's.
    'heffingskorting' => 347, // heffingskorting.
  ),
    array (
    'leverancier' => 'Oxxio',
    'korting_tekst' => '100 euro korting',
    'korting_value' => 80,
    'contract_duur' => '12 maanden', // Aantal maanden in tekst
    'contract_duur_value' => 12, // Aantal maanden
    'tarief_enkel_stroom' => 0.20, // In cent ipv euro's. Makkelijker om de komma te berekenen
    'tarief_dubbel_stroom' => 0.21, // In cent ipv euro's. Makkelijker om de komma te berekenen 
    'tarief_piek_stroom' => 0.21, // In cent ipv euro's. Makkelijker om de komma te berekenen       
    'tarief_gas' => 0.58, // In cent ipv euro's. Makkelijker om de komma te berekenen
    'tarief_vastrecht_stroom' => 3.75, // In euro's.
    'tarief_vastrecht_gas' => 3.75, // In euro's.   
    'tarief_transport_stroom' => 350, // In euro's.
    'tarief_transport_gas' => 124, // In euro's.
    'heffingskorting' => 347, // heffingskorting.
  ),
);

?>

虽然页面的一部分看起来像这样(使用Joomla CMS):

<div class="leverancier-container vergelijkbox" id="box-one">


<?php
  foreach ($leverancierarray as $leverancierrow) {
    $lowerleverancier = strtolower($leverancierrow['leverancier']);
    $displayleverancier = ucwords($leverancierrow['leverancier']);

    $totaal_stroom_kosten = (($leverancierrow['tarief_enkel_stroom']*3500)+($leverancierrow['tarief_vastrecht_stroom']*12));
    $totaal_gas_kosten = (($leverancierrow['tarief_gas']*1600)+($leverancierrow['tarief_vastrecht_gas']*12));
    $transport_kosten = ($leverancierrow['tarief_transport_stroom']+$leverancierrow['tarief_transport_gas']);
    $heffingskorting = $leverancierrow['heffingskorting'];
    $totaal_transport_kosten = ($transport_kosten-$heffingskorting);
    $korting = $leverancierrow['korting_value'];

    $jaarbedrag = ($totaal_stroom_kosten+$totaal_gas_kosten+$totaal_transport_kosten);
    $totaal_jaarbedrag = str_replace('.',',',round(($jaarbedrag-$korting),0));

    $maandbedrag = str_replace('.',',',round(($totaal_jaarbedrag/12),0)); 



  echo '<div data-sort="'.$maandbedrag.'" class="leverancier-box" id="'.$lowerleverancier.'">
            <div class="leverancier-logo">
                <div><a href="/aanbieder/'.$lowerleverancier.'" target="_blank" rel="nofollow"><span class="logo_'.$lowerleverancier.'"></span></a></div>
            </div>

            <div class="leverancier-contract">
                <div>
                    <h3>Contract</h3>
                </div>
                <div class="leverancier-voorwaarden">
                    <div>Duur: <span>'.$leverancierrow['contract_duur'].'</span></div>
                    <div>Actie: <span>'.$leverancierrow['korting_tekst'].'</span></div>         
                </div>

                <div>
                    <div><a href="#">Bekijk de tarieven.</a></div>
                </div>
            </div>

            <div class="leverancier-prijs">
                <div>
                    <h3>Gemiddelde prijs</h3>
                </div>
                <div class="leverancier-voorwaarden">
                    <div class="prijs_div_homepage"><span class="prijs_groot_homepage">€ '.$maandbedrag.'</span> per maand</div>    
                </div>

                <div>
                    <div><span>€ '.$totaal_jaarbedrag.'</span> per jaar</div>                       
                </div>
            </div>

            <div class="leverancier-bestellen">
                <div>
                    <div><a href="/aanbieder/'.$lowerleverancier.'" target="_blank" rel="nofollow"><span class="knop_3">Overstappen</span></a></div>
                    <div><a href="#">Meer informatie</a></div>          
                </div>
            </div>
        </div>';
  }
?> 

</div>

for each将创建3个独立的'leverancier-box'div,其中包含来自数组的信息。我试图让同事尽可能简单地更新价格。他们只需要更改'tarief_enkel_stroom'等,以便$ maandbedrag值更新。因为数组中的第三个提供程序可以更便宜,我正在尝试使用jQuery根据$ maandbedrag的值对div进行排序。

我尝试在父元素中使用data-sort =“'。$ maandbedrag。'”对div进行排序。我尝试使用this问题作为参考,但我无法使其发挥作用。我也尝试使用this方法,但是我不完全理解这两种方法的代码,我相信这是解决这个问题的最大问题。

再次感谢你看这个问题,我希望有人可以告诉我如何解决我面临的问题。

PS:我认为jQuery是根据$ maandbedrag的值对3个div进行排序的最佳方法。

亲切的问候,

凯文。

编辑:

我使用jQuery解决了这个问题。我使用this主题作为指南。

0 个答案:

没有答案