2016-05-19 6 views
-1

Я работаю над простым сравнением цен, и я хочу, чтобы выход был чистым, насколько это возможно. Основной массив моих данных выглядит следующим образом:PHP Пропустить цикл foreach на одном значении

Array ([0] => stdClass Object ([id] => 84 [system_id] => 174 [url] => https://firstshop-pricecheck.com/url-1 [shopid] => First Shop [price] => {"price": "32 00", "amount": "10", "variation": "standard"} [currency] => EUR) [1] => stdClass Object ([id] => 85 [system_id] => 174 [url] => https://firstshop-pricecheck.com/url-2 [shopid] => First Shop [price] => {"price": "18 00", "amount": "3", "variation": "other"}, {"price": "28 01", "amount": "5", "variation": "standard"}, {"price": "49 00", "amount": "10", "variation": "other"}, {"price": "108 00", "amount": "25", "variation": "standard"} [currency] => EUR) [2] => stdClass Object ([id] => 106 [system_id] => 174 [url] => https://secondshop-pricecheck.com/url-1 [shopid] => Second Shop [price] => {"price": "3 25", "amount": "1", "variation": "standard"}, {"price": "4 50", "amount": "1", "variation": "other"}, {"price": "32 50", "amount": "10", "variation": "standard"}, {"price": "45 00", "amount": "10", "variation": "other"} [currency] => GBP)) 

На первом, у нас есть заголовок таблицы:

<table id="pricecheck" class="table table-striped table-bordered" cellspacing="0" width="100%"> 
       <thead> 
        <tr> 
         <th>Shop</th> 
         <th>Country</th> 
         <th>Payment</th> 
         <th>Amount/Price</th> 
        </tr> 
       </thead> 
       <tbody> 

На данный момент, есть новая строка для каждого магазина (shopid), в в столбце «Сумма/цена» у меня есть другой foreach, чтобы поместить данные в поле простого выбора.

<?php foreach ($array as $key => $value) { ?> 
         <tr> 
         <td><?php echo $value->shopid; ?></td> 
         <td>#Country</td> 
         <td>#Payment</td> 
         <td> 
         <?php 
         # decode data to json: 
         $xmyson = $value->price . ', '; 
         $ymyson = rtrim($xmyson, ', '); 
         $zmyson = '{ "prices": [' . $ymyson . ']}'; 

         $decode = json_decode($zmyson); 
         ?> 
         <select id="price_check_ordering" name="price_check_ordering" class="inputbox"> 
          <?php 
          foreach ($decode->prices as $xvalue) { ?> 
          <option> 
          <?php 
          $fprice = str_replace(" ", ",", $xvalue->price); 
          echo $fprice . ' €'; 
          ?> 
          </option> 
          <?php } ?> 
          </select> 
          ?> 
         </td> 
         </tr> 
            <?php } ?> 

Теперь для первого цикла: если это тот же магазин (shopid), то не создать еще одну строку - НО создать еще выбрать в этой строке с данными. Таким образом, для одного и того же магазина нет новой строки, кроме другого простого поля выбора в разделе «Сумма/цена» с относительными данными. Я пытаюсь найти правильную логику для решения этой проблемы.

+0

ли массив заказан shopid? –

+1

Пожалуйста, переформатируйте свой код, чтобы мы могли прочитать его без наклонения наших головок ... – Edward

+1

Немного не по теме, но у вас нет открывающего тега '

ответ

0

Ленивый решение:

<?php 

//order array by id 
usort($your_data, function($a, $b) { 
    return $a->id > $b->id; 
}); 

$outputKeys = []; 
foreach ($array as $key => $value) { ?> 
    if(!in_array($key, $outputKeys)){ 
     $outputKeys[] = $key; 
     <tr> 
        <td><?php echo $value->shopid; ?></td> 
        <td>#Country</td> 
        <td>#Payment</td> 
        <td> 
        <?php 
        # decode data to json: 
        $xmyson = $value->price . ', '; 
        $ymyson = rtrim($xmyson, ', '); 
        $zmyson = '{ "prices": [' . $ymyson . ']}'; 

        $decode = json_decode($zmyson); 
        ?> 
        <select id="price_check_ordering" name="price_check_ordering" class="inputbox"> 
         <?php 
       } //endif output your select 
         foreach ($decode->prices as $xvalue) { ?> 
         <option> 
         <?php 
         $fprice = str_replace(" ", ",", $xvalue->price); 
         echo $fprice . ' €'; 
         ?> 
         </option> 
         <?php } ?> 
         </select> 
         ?> 
        </td> 
        </tr> 
           <?php } ?> 
Смежные вопросы