Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail



Ответ
 
Опции темы
Старый 27.12.2017, 15:33   #1
maks1331
Пользователь
 
Регистрация: 20.12.2016
Сообщений: 43
Репутация: 10
Подмигивание Вывод текстовых строк по итерации

Добрейший денёчек всем постояльцам и просто мимо пробегающим знатокам, я вернулся с очередным, непростым для меня вопросом.

Имеется код:

Код:

<?php
$arr = scandir('./assets/components/images/glav');
foreach($arr as $v) {
if(stripos($v,'.jpg')) echo 
'
<li class="col-md-4 col-sm-4 col-xs-6">
<div class="content-image-block">
<img alt="" src="http://lc-omega.ru/assets/components/images/glav/'.$v.'">
<div class="content-block-hover">
<h5>Автор</h5>
<p>Описание</p>
<a title="" href="http://lc-omega.ru/assets/components/images/glav/'.$v.'" class="zoom"><i class="fa fa-search"></i></a>
<a title="" href="#"><i class="fa fa-external-link"></i></a>
</div>
</div>
</li>
';
}

Он выполняет вывод картинок из папки.
Задача: В папке находиться файл text.txt в файле 12 строк, необходимо, что бы при выводе каждой картинки вместо "Автор" и "Описание" выводились 1 и 2 строчка, далее 3 и 4 и так далее соответственно.
___
Сам решить вопрос не могу, надеюсь на вашу помощь
maks1331 вне форума   Ответить с цитированием
Старый 27.12.2017, 16:20   #2
Andkorol
Профессионал
 
Регистрация: 31.05.2010
Сообщений: 3,198
Репутация: 986
По умолчанию

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

Но если мсье таки предпочитает ..овнокодить – то вот примерный алгоритм действий:
1. Читай файл в массив, где каждый элемент – это строка файла. (file)
2. Пройди по этому массиву циклом (for или foreach) – и проверяй ключи на предмет деления по модулю на 2 (см. первый комментарий по ссылке в качестве примера).
Так можно определить четные и нечетные элементы массива.
Нечетный элемент – Автор, четный элемент – Описание.
3. В этом же цикле сформируй «рабочий» массив (можно два отдельных) c авторами и описаниями.
4. Далее в своём цикле foreach($arr as $v) добавь определение ключа, и по нему извлекай нужного автора и описание из созданного «рабочего массива»:
PHP код:
<?php
foreach($arr as $k => $v) {
    
// ...
?>
    <h5><?= $file_info['authors'][$k]; ?></h5>
    <p><?= $file_info['descriptions'][$k]; ?></p>
<?php
    
// ...
}
?>
Andkorol на форуме   Ответить с цитированием
Старый 27.12.2017, 16:59   #3
maks1331
Пользователь
 
Регистрация: 20.12.2016
Сообщений: 43
Репутация: 10
По умолчанию

Выполняю эту задачу с целью максимально упростить работу с динамическими блоками для будущего владельца, дабы ему не приходилось лезть в админку, а просто открывать текстовик и менять там текст. Мне кажется это самый простой и понятный способ)
Попробую сделать, спасиб, отпишусь о прогрессе.
maks1331 вне форума   Ответить с цитированием
Старый 27.12.2017, 17:06   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,020
Репутация: 5118
По умолчанию

Цитата:
Сообщение от maks1331 Посмотреть сообщение
Выполняю эту задачу с целью максимально упростить работу с динамическими блоками для будущего владельца, дабы ему не приходилось лезть в админку
вполне может получится медвежья услуга.
удалите пару первых картинок jpg. потом опять запишите их же, в ту же папку.
и всё. Содержимое текстового файла перестанет соответствовать найденным картинкам.
Как правильно сказал выше Andkorol
Цитата:
Сообщение от Andkorol Посмотреть сообщение
Способ хранения авторов и описаний в файле без четкой привязки к конкретному изображению – глупый и неэффективный, наугад что называется.
но это, конечно, ваше дело.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 27.12.2017, 17:06   #5
Andkorol
Профессионал
 
Регистрация: 31.05.2010
Сообщений: 3,198
Репутация: 986
По умолчанию

Цитата:
Сообщение от maks1331 Посмотреть сообщение
Выполняю эту задачу с целью максимально упростить работу с динамическими блоками для будущего владельца, дабы ему не приходилось лезть в админку, а просто открывать текстовик и менять там текст. Мне кажется это самый простой и понятный способ)
Лезть на сервер по FTP, менять малопонятное содержимое в перспективе возможно немаленького txt-файла – всё вот это проще и удобнее, чем войти в Админку и отредактировать конкретную запрошенную строку для конкретной картинки?!?!?!?
Andkorol на форуме   Ответить с цитированием
Старый 27.12.2017, 17:25   #6
maks1331
Пользователь
 
Регистрация: 20.12.2016
Сообщений: 43
Репутация: 10
По умолчанию

Картинки выводятся из папки в алфавитном порядке, в процессе понимания "что к чему относится" вопросов появляться не должно. Хотя, возможно вы и правы и стоит сделать иначе, всё равно дальше чтения файла в массив я пока не зашёл)
______
но задача лично для меня стала интересной, надо всё таки разобраться.

Код:

<?php
$lines = file('./assets/components/images/glav/text.txt');
$arr = scandir('./assets/components/images/glav');
foreach ($lines as  $line) {
    echo "";
}
foreach($arr as $keys => $v) {
$keys = array('authors', 'descriptions');
if(stripos($v,'.jpg')) echo 
'
<li class="col-md-4 col-sm-4 col-xs-6">
<div class="content-image-block">
<img alt="" src="http://lc-omega.ru/assets/components/images/glav/'.$v.'">
<div class="content-block-hover">
<h5>Автор</h5>
<p>Описание</p>
<a title="" href="http://lc-omega.ru/assets/components/images/glav/'.$v.'" class="zoom"><i class="fa fa-search"></i></a>
<a title="" href="#"><i class="fa fa-external-link"></i></a>
</div>
</div>
</li>
';
}

[Выделено] Я записал файл в массив по строкам - окей.
Поправил первый, как я понимаю, цикл: ($arr as $keys => $v)
и добавил ключи $keys = array('authors', 'descriptions');
А вот как перебрать имеющийся массив $lines по чётным и нечётным строками с записью соответствующих в массивы автор и описание, а далее вывод необходимых элементов в основном цикле - у меня голова кипит.
(Не ругайтесь, я самоучка в этом деле и с php работаю крайне редко)

Последний раз редактировалось maks1331; 27.12.2017 в 17:35.
maks1331 вне форума   Ответить с цитированием
Старый 27.12.2017, 18:13   #7
Andkorol
Профессионал
 
Регистрация: 31.05.2010
Сообщений: 3,198
Репутация: 986
По умолчанию

PHP код:
$file file('./text.txt'FILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES);
$file_info = array(
    
'authors' => array(),
    
'descriptions' => array(),
);
if(!empty(
$file)){
    foreach (
$file as $key => $value) {
        if((
$key 2) == 0){
            
$file_info['authors'][] = $value;
        }
        else {
            
$file_info['descriptions'][] = $value;
        }
    }

Получаем массив такого вида:
Код:

Array
(
    [authors] => Array
        (
            [0] => Author 1
            [1] => Author 2
            [2] => Author 3
            [3] => Author 4
        )

    [descriptions] => Array
        (
            [0] => Description 1
            [1] => Description 2
            [2] => Description 3
            [3] => Description 4
        )

)

Доступ к элементам массива я описал ранее.
Andkorol на форуме   Ответить с цитированием
Старый 27.12.2017, 18:20   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,020
Репутация: 5118
По умолчанию

без массивов, в лоб - берём нужные строчки (если они там есть в массиве) и подставляем.
пробуйте:
Код:

<?php
$dir    = './assets/components/images/glav/';
$lines = file($dir.'text.txt');
$files1 = array_filter( scandir($dir), function($v) { return stripos($v,'.jpg');});
$k=0;
foreach($files1 as $f){
	if($k<(count($lines)-1)){
		$autor=$lines[$k++];
		$descr=$lines[$k++];
	}
	else{
		$autor='unknown autor';
		$descr='empty desc';
	}
?>
<li class="col-md-4 col-sm-4 col-xs-6">
<div class="content-image-block">
<img alt="" src="http://lc-omega.ru/assets/components/images/glav/<?=$f?>">
<div class="content-block-hover">
<h5><?=$autor?></h5>
<p><?=$descr?></p>
<a title="" href="http://lc-omega.ru/assets/components/images/glav/<?=$f?>" class="zoom"><i class="fa fa-search"></i></a>
<a title="" href="#"><i class="fa fa-external-link"></i></a>
</div>
</div>
</li>
<?php
}
?>



Добавлено
упс. я опоздал...
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 27.12.2017, 18:51   #9
maks1331
Пользователь
 
Регистрация: 20.12.2016
Сообщений: 43
Репутация: 10
По умолчанию

Огромное спасибо, всё работает как часы.
Единственное, ошибка кодировки есть)
maks1331 вне форума   Ответить с цитированием
Старый 27.12.2017, 18:54   #10
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,020
Репутация: 5118
По умолчанию

Цитата:
Сообщение от maks1331 Посмотреть сообщение
Единственное, ошибка кодировки есть)
нужно всё привести к единой кодировке utf-8
и сам файл text.txt и PHP скрипт и тот html, который генерите (
Код HTML:
<html>
  <head>
    <meta charset="utf-8">
  </head>
....
)
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение и удаление части текстовых строк strannick Microsoft Office Excel 5 18.10.2013 19:36
Сравнение строк двух текстовых файлов Alina111 Общие вопросы C/C++ 4 10.01.2013 10:03
Обработка текстовых строк Funy Помощь студентам 1 15.12.2011 17:39
Обработка текстовых строк Funy Помощь студентам 0 13.12.2011 14:16
Как посчитать сумму строк во всех текстовых файлах? qwestor PHP 8 30.12.2007 17:02




20:10.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
лучший хостинг
Выбираем лучший хостинг: рейтинг ТОП 10