Реклама на сайте Advertise with us

Создание переменных в цикле - как?

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087

Ссылка на сообщениеДобавлено: 04/10/12 в 20:29       Ответить с цитатойцитата 

Вот примерно код

$m_0=array('a,b,c,d,e' , 'g,h,j,i,k' , 'l,m,n,o,q');
for($i=0;$i<=count($m_0);$i++)
{
$m_.$$i=explode(',',$m_0[$i]);
}

т.е, в результате должно быть 3 массива $m_1, $m_2, $m_3, но нихрена не получается.

0
 

См.Подпись

С нами с 30.01.07
Сообщения: 33345
Рейтинг: 6370


Передовик Master-X (01.06.2008) Передовик Master-X (16.08.2008) Передовик Master-X (01.03.2011) Передовик Master-X (01.05.2011)
Ссылка на сообщениеДобавлено: 04/10/12 в 20:53       Ответить с цитатойцитата 

Давно не занимался PHP, и сейчас просмотрел по диагонали, но попробуй если хочешь так:
$m_0=array('a,b,c,d,e' , 'g,h,j,i,k' , 'l,m,n,o,q');
for($i=0;$i<=count($m_0);$i++)
{
$m_.{$i}=explode(',',$m_0[$i]);
}


Либо ${$i}

Подпись Сдаётся в Аренду. $100 за одну строчку в месяц.
Больше 1000 постов в месяц. Обращайтесь в ЛС.

6
 

См.Подпись

С нами с 30.01.07
Сообщения: 33345
Рейтинг: 6370


Передовик Master-X (01.06.2008) Передовик Master-X (16.08.2008) Передовик Master-X (01.03.2011) Передовик Master-X (01.05.2011)
Ссылка на сообщениеДобавлено: 04/10/12 в 21:00       Ответить с цитатойцитата 

Скорее второй вариант icon_cool.gif

Подпись Сдаётся в Аренду. $100 за одну строчку в месяц.
Больше 1000 постов в месяц. Обращайтесь в ЛС.

6
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 04/10/12 в 23:08       Ответить с цитатойцитата 

<?php

$m_0 = array('a,b,c,d,e', 'g,h,j,i,k', 'l,m,n,o,q');

foreach ($m_0 as $v) {
$result[] = explode(',', $v);
}
print_r($result);

пришел к победе коммунистического труда

6
 



С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087

Ссылка на сообщениеДобавлено: 04/10/12 в 23:42       Ответить с цитатойцитата 

сенкс, второй вариант. последнее не понял к чему icon_biggrin.gif
в продолжение - как получить размер новых массивов?

$m_0=array('a,b,c,d,e' , 'g,h,j,i,k' , 'l,m,n,o,q');
for($i=0;$i<=count($m_0);$i++)
{
$m_.${$i}=explode(',',$m_0[$i]);
echo count($m_.${$i});
}

почему-то всегда выводит 1

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/10/12 в 00:15       Ответить с цитатойцитата 

st01en: а зачем ты вообще так извращаешься с именами массивов ? Так не делают, ты только зря память и операции тратишь на копии данных. Плюс код жутко не читабельный.

Код:

<?php
$array = array(
    'a,b,c,d,e',
    'g,h,j,i,k',
    'l,m,n,o,q',
);

foreach ($array as $string) {
    $sub_array = explode(',', $string);
    print 'Elemnts count: '.count($sub_array).'<br />';
}

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

6
 



С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087

Ссылка на сообщениеДобавлено: 05/10/12 в 00:33       Ответить с цитатойцитата 

ну скажем цель такая - разобрать текст в массив построчно, потом строки разбить по словам, - каждая строка получается новый массив? Потом надо определить длинну каждого массива, найти самый большой и вывести все это дело в таблицу, где кол-во строк = длине самого большого массива. как это можно организовать? причем кол-во слов и предложений в тексте неизвестно.
('a,b,c,d,e', 'g,h,j,i,k', 'l,m,n,o,q') - это только для примера.

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/10/12 в 00:52       Ответить с цитатойцитата 

Про таблицу по длине масива не понял. Но примерно так.

Код:

<?php
$text = "
Еще два человека, которых задержали вместе с остальными, были отпущены из полиции без составления протоколов.
Это Николай Кузнецов и Эльвира Ганиева.
Почему их не заподозрили в нарушении КоАП, не уточняется.
";

$text = explode("\n",trim($text));

// инициализируем начальные данные
$long_string = '';
$string_length = 0;

foreach ($text as $string) {
    $current_length = strlen($string);
    if ($string_length > $current_length) { continue; }

    // если текущая строка длиннее, то выбираем ее.
    // иначе до сюда скрипт не дойдет а вернется в начало
    // по continue;
    $string_length = $current_length;
    $long_string = $string;
}

print "Самая длинная строка из {$string_length} символов: <br />{$long_string}";

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

6
 



С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087

Ссылка на сообщениеДобавлено: 05/10/12 в 08:10       Ответить с цитатойцитата 

Stek: Да я знаю, как получить длину массива icon_biggrin.gif Задача несколько другая. Вот для примера,

Код:
$text = 'Рыба:Карась,Карп,Окунь,Щука, Лящ. Сыр:Голландский, Российский, Плавленный. Мясо:Свинина, Говядина, Баранина, Кошатина.';


В результате нужно вывести вот такую таблицу -
Код:

           Рыба          Сыр           Мясо
           Карась        Голландский   Свинина
           Карп          Российский    Говядина
           Окунь         Плавленный    Баранина
           Щука                        Кошатина
           Лящ


Причем - именно таблицу с бордюром icon_biggrin.gif
Как заменить : и убрать пробелы я тоже знаю icon_biggrin.gif Интересует именно динамическое создание массивов и потом возможность с ними работать. Потому что изначально неизвестно, сколько в тексте строк, слов и т.д icon_biggrin.gif

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/10/12 в 09:01       Ответить с цитатойцитата 

Таблицу с бордюром - это тебе в html уже smail101.gif

А так у тебя 3 варианта для парсинга.
1. Разделять строки по explode()
2. strstr() или strpos() искать точки как конец строки
3. воспользоваться preg_match функцией и парсить регулярками.

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

6
 



С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087

Ссылка на сообщениеДобавлено: 05/10/12 в 10:39       Ответить с цитатойцитата 

Спасибо за наводку по сравнению массивов icon_biggrin.gif Вот собственно код, который делает то, что нужно
Код: [развернуть]


Но мне интересно - может быть есть какое-то более оптимальное решение?

0
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 05/10/12 в 16:52       Ответить с цитатойцитата 

$text = 'Рыба:Карась,Карп,Окунь,Щука,Лящ,Тюлька. Сыр:Голландский,Российский,Плавленный. Мясо:Свинина,Говядина,Баранина,Кошатина.';
$text = explode('.', $text);

foreach ($text as $k => $v) {
if (empty($v)) {
continue;
}
preg_match("~(.*?):~isu", $v, $matches);
$v = preg_replace("~(" . $matches[0] . ")~isu", '', $v);
$result[] = array('head' => $matches[1], 'items' => explode(',', $v));
}
echo '<pre>';
print_r($result);

далее вывод в таблицу

пришел к победе коммунистического труда

6
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 05/10/12 в 21:42       Ответить с цитатойцитата 

FXIX:
а preg_match пошто??? где xpath где simple где твои библы??
вот они двойные стандарты в действии.

крипта на ByBit

6
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 05/10/12 в 22:32       Ответить с цитатойцитата 

Sterx писал:
FXIX:
а preg_match пошто??? где xpath где simple где твои библы??
вот они двойные стандарты в действии.


а могу все объяснить.

там где ты предлагал юзать регулярки:
- написаны дохуя удобных либ. приводящих код в простому виду. по-сути к css-селекторам. ты же предлагал выпарсивать из непонятно какой верстки (в общем случае - невалидной, с вложенными-перевложенными селекторами) регулярками. т.е. переписывать написанное. не секрет что такого уровня регулярки - просто так не напишешь. без литра водки и такой-то матери.

- регулярка вида "(.*?):" понятна даже нубу. тут невозможно ошибиться, в отличие от регулярок которые надо написать чтобы выпарсить из верстки. потом в них также невозможно разобраться.

- ну и это. у меня кода меньше smail101.gif

пришел к победе коммунистического труда

-1
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »