Как вывести конкретный елемент масива в начало?

196
11 декабря 2017, 16:33

Есть масив, нужно перенести значение "производитель" на первое место, тоесть должно стоять перед "Используемый кофе: молотый / зерновой", количество елементов в масиве может быть разное

           <?php if ($attribute_groups) { ?>
           <div class="tab-pane" id="tab-specification">
              <div class="tab-bg">
                 <table class="table table-striped table-hover">
                    <?php foreach ($attribute_groups as $attribute_group) { ?>
                    <thead>
                       <tr>
                          <td colspan="2"><strong><?php echo $attribute_group['name']; ?></strong></td>
                       </tr>
                    </thead>
                    <tbody>
                       <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
                       <tr>
                          <td><?php echo $attribute['name']; ?></td>
                          <td><?php echo $attribute['text']; ?></td>
                       </tr>
                       <?php } ?>
                    </tbody>
                    <?php } ?>
                 </table>
              </div>
           </div>
           <?php } ?>
Answer 1

В списке функций для работы с массивами не нашел ничего похожего на "извлечь элемент массива, соответствующий условию". Полагаю, что "производитель" всегда соответствует attribute_id = 19 (иначе придется сравнивать с name = Производитель). Ну и делаем как-то так:

$a = [
['attribute_id' => 1, 'name' => 'фигня1', 'text' => 'фигня1'],
['attribute_id' => 2, 'name' => 'фигня2', 'text' => 'фигня2'],
['attribute_id' => 3, 'name' => 'фигня3', 'text' => 'фигня3'],
['attribute_id' => 4, 'name' => 'фигня4', 'text' => 'фигня4'],
['attribute_id' => 5, 'name' => 'фигня5', 'text' => 'фигня5'],
['attribute_id' => 19, 'name' => 'Производитель', 'text' => 'Saeco']
];
$temp = array_filter($a,function($i){return $i['attribute_id'] == 19;});
unset($a[key($temp)]);
array_unshift($a, current($temp));

Ну и другой вариант, если в этих ваших опен-картах можно как-то вфигачиваться в запрос, то можно просто добавить в условие ORDER BY такую несложную штуку как attribute_id = 19 DESC - тогда производитель всегда будет на первом месте, а остальные элементы - ну как получится.

READ ALSO
PHP. Проверить окончание url на соответствие

PHP. Проверить окончание url на соответствие

Здравствуйте, уважаемое сообщество! Нужно в независимости от наличия www в url, а также HTTP или HTTPS, проверить окончание url на соответствие ( в данном...

172
Настраиваемый порядок вывода из mysql

Настраиваемый порядок вывода из mysql

Есть таблица в MySQL с полями id(int,autoincrement), [много не относящихся к вопросу полей], pos(int)

180
Как отправить reCAPTCHA(google) с помощью ajax

Как отправить reCAPTCHA(google) с помощью ajax

Подскажите пожалуйста, как я могу отправить параметры рекапчи на сервер(php), с помощью ajaxНиже привел пример, как я думал, это сделать

152