Дня доброго. собственно есть массив вида Код: array ( 0 => array ( 'code' => '014-001', 'name' => 'Имя', 'group' => array ( 0 => 'группа', ), 'price' => NULL, ), 1 => array ( 'code' => '014-002', 'name' => 'Имя', 'group' => array ( 0 => 'группа', ), 'price' => NULL, ), 2 => array ( 'code' => '030-001', 'name' => 'Имя', 'group' => array ( 0 => 'группа', ), 'price' => '800', ) , 3 => array ( 'code' => '030-002', 'name' => 'Имя', 'group' => array ( 0 => 'группа', ), 'price' => '800', ) ) И нужно сделать следующее 1) если 'code' = 014-*** то скрываем или не выводим это значение 2) если 'code' = 030-*** то добавляем надпись "код 030" перед каждым из значений и одну общую над этой группой
не совсем понятно, что ты имеешь ввиду под "не выводим"? если код 014, то в массиве не должно быть этого элемента? куда добавляем "код 030"? покажи пример? ну а выглядит это так, как будто тебе нужно просто пройтись foreach и создать новый массив с нужными элементами.
Код: <?php $c = curl_init(); curl_setopt($c, CURLOPT_URL, 'price.gz'); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); curl_setopt($c, CURLOPT_HEADER, true); $result = curl_exec($c); $status = curl_getinfo($c, CURLINFO_HTTP_CODE); $headerSize = curl_getinfo($c, CURLINFO_HEADER_SIZE); ?> <table> <tr> <th class="articul">Артикул</th> <th class="description">Описание</th> <th class="price">Цена</th> </tr> <?php foreach($arr as $val){ $price = '<tr><td class="articul"><i class="ico-price-art"></i>' .$val['code'] . '</td><td class="description">' .$val['name'] . '</td><td class="price"><i class="ico-price"></i>' .number_format((float)$val['price'],0,'',' ') . ' РУБ.</td></tr>'; echo $price; } } ?> </table>
PHP: foreach($arr as $val) { if (strpos($val['code'], '014-') !== false) { continue; } $code = strpos($val['code'], '030-') ? 'код 030' : ''; $price = '<tr><td class="articul"><i class="ico-price-art"></i>' . $code . '</td><td class="description">' .$val['name'] . '</td><td class="price"><i class="ico-price"></i>' .number_format((float)$val['price'],0,'',' ') . ' РУБ.</td></tr>'; echo $price; } Т.к. ты ничего толком не объяснил, то как-то так
во с удалением всё хорошо, странно как-то отрабатывает добавление если в массиве есть к примеру 001-030-222 то надпись он добавляет а выше 030-222 он не добавляет надпись мне нужно чтобы он именно первые цифры учитывал если использовать strstr то добавляется для всех где есть 030
PHP: foreach($arr as $val) {if (strpos($val['code'], '014-') !== false) {continue;}$code = strpos($val['code'], '030-') === 0 ? 'код 030' : '';$price = '<tr><td class="articul"><i class="ico-price-art"></i>'. $code. '</td><td class="description">'.$val['name']. '</td><td class="price"><i class="ico-price"></i>'.number_format((float)$val['price'],0,'',' '). ' РУБ.</td></tr>';echo $price;}
а если нужно вывести эту же надпись но ещё и перед группой? к примеру в массиве 030-001 030-002 030-003 031-001 031-002 031-003 и нужно чтобы получилось так код 30 030-001 030-002 030-003 код 31 031-001 031-002 031-003
в этом случае не получится сделать с текущим массивом. Нужно собрать другой, в котором будет, как-то так: PHP: [ '030' => [ [ [ 'code' => '030-001', 'name' => 'Имя', 'group' => [ 'группа', ], 'price' => 800, ], [ 'code' => '030-002', 'name' => 'Имя', 'group' => [ 'группа', ], 'price' => 800, ], ], '031' => [ [ [ 'code' => '031-001', 'name' => 'Имя', 'group' => [ 'группа', ], 'price' => 800, ], [ 'code' => '031-002', 'name' => 'Имя', 'group' => [ 'группа', ], 'price' => 800, ], ],] тогда, просто будет вложенность циклов. foreach в foreach