Комплексное решение задачи на php (таблица -> строка -> массив -> вывод)

sapphires

Новичок
Комплексное решение задачи на php (таблица -> строка -> массив -> вывод)

Конкретную тему сформулировать не смог в силу того, что задача имеет комплексных характер (или же в моем не одаренности в php).
Но, думаю, эта тема будет качественно-полезна с точки зрения "не дробления" её на несколько.
Заранее извиняюсь если что не так. Критика приветствуется.

Формулировка:

1. Вывожу с помощью цикла foreach() уже заранее "обработанный" текстовый файл содержимое которого ниже

<script type='text/javascript'>
var N1=[];
N1[0]=['00443676','443676','000241','1','7204','Soccer / Australia McInerney Ford Night Series 1st Division ','Rockingham City (N) ','Dianella White Eagles','0729','0',0,'0','1H 26\'','','True',1,'0',0,0,'0','0','0','1','3236954','0-0.5','1.920','1.920','h','3236953','2.0','1.930','1.890','','','','','3238437','0.0','1.540','2.428','','3238438','0.5','1.910','1.910','','','',''];
N1[1]=['222','2223','323','2','','','','','','',,'','','','True',1,'0',0,0,'0','0','0','1','3238435','0.5','2.234','1.650','h','3238436','2-2.5','2.176','1.670','','','','','3236950','0-0.5','2.562','1.480','h','3236949','0.5-1','2.315','1.580','','','',''];
N1[2]=['00443687','443687','001331','1','3034','Soccer / Turkey Youth League','Trabzonspor (Youth)(N)','Ankaragucu (Youth)','0729','0',0,'0','1H 29\'','','True',1,'0',0,1,'1','0','0','1','3237187','1.0','1.805','2.036','h','3237186','4.0','2.025','1.795','','','','','3238330','0-0.5','2.010','1.830','h','3238331','2.5','1.990','1.830','','','',''];
N1[3]=['','','','2','','','','','','',,'','','','True',1,'0',0,0,'0','0','0','1','3238328','1-1.5','2.307','1.605','h','3238329','4-4.5','2.351','1.560','','','','','3237183','0.5','2.754','1.410','h','3237182','2.5-3','2.369','1.550','','','',''];
</script>

PHP:
foreach($out as $v)
{
  if(isset($v[2]) && isset($v[3]) && isset($v[4]) )
  $n[$v[2]][$v[3]] = eval('return array('.$v[4].');' );
}
print_r($n);
получаю в браузере:

PHP:
.Array (                                                                                         "А"       - массив
.             [1] => Array (                                                                 "A1"     - массив
.                                    [0] => Array (                                          "A1.1"  - массив
.                                                           [0] => 00443676  
.                                                           [1] => 443676 
.                                                           [2] => 000241 
.                                                                 ***     
.                                                           [48] => xxx 
.
.                                     [1] => Array (                                           "A1.2" - массив
.                                                           [0] => 222  
.                                                           [1] => 2223 
.                                                           [2] => 323 
.                                                                 ***     
.                                                           [48] => xxx 
.
.                                     [2] => Array (                                           "A1.3"  - массив                    
.                                                           [0] => 00443687  
.                                                           [1] => 443687 
.                                                           [2] => 001331 
.                                                                 ***     
.                                                           [48] => xxx
Задача №1:

Как можно получить массив "А1"
первый ключ которого должен иметь не цифру, а текст - "футбол",
второй - "тенис"
и т.д.
В данном случае у нас массив "А1" - футбол

Задача №2:
Начну с описания проблемы этой задачи потом опишу саму задачу
Проблема :
Дело в том, что элементы массива "A1.2" должны принадлежать массиву "A1.1"- в силу с условием (если в шестом элементе массива "A1.2" нет никакого значения то нужно вывести массивы "A1.1" и "A1.2" как единый целый элемент массива "A1" - т.е. теперь массив "A1.1" должен содержать все элементы массива "A1.2" - общее количество элементов теперь должно быть 96 ).
Также нужно проверить шестой элемент следующего массива - "A1.3" на это условие и также прибавить к тем двум (только уже одному "A1.1" массиву) и т.д.
Когда цикл все таки находит какое-то значение шестой элемент N массива
он должен сделать с этим же массивом так же как и с "A1.1".

И все это мне нужно для того чтобы решить это:
Теперь мы будем иметь массив "A1.1" как бы полон своими числовыми ключами
которые нужно заменить "ассоциациями" т.е. конвертировать ее в ассоциативный массив
(для этого я так понял нужно создать еще один массив, дать ключам ассоциации и потом с помощью array_flip() поменять местами ключи с значениями и вывести их в браузер)

типа такого:

Array
(
[48TIME1] =>
[3FULL_TIME_GOAL1] => 2
[14FULL_TIME_UDP1] => True
[22FIRST_HALF_A1] => 1
[21FIRST_HALF_H1] => 0
[23FIRST_HALF_GOAL1] => 3238328
[24FIRST_HALF_VER1] => 1-1.5
[25FIRST_HALF_UNDER1] => 2.307
[26EVENT1] => 1.605
[40EVENT1] => h
[28FULL_TIME_UDP1] => 3238329
[29FULL_TIME_H1] => 4-4.5
[30FULL_TIME_A1] => 2.351
[31FULL_TIME_GOAL1] => 1.560
[36FIRST_HALF_A1] => 3237183
[37FIRST_HALF_GOAL1] => 0.5
[38FIRST_HALF_VER1] => 2.754
[39FIRST_HALF_UNDER1] => 1.410
[null] => 3237182
[42FIRST_HALF_A1] => 2.5-3
[43FIRST_HALF_GOAL1] => 2.369
[44FIRST_HALF_VER1] => 1.550
)
 

jonjonson

Охренеть
Перестаньте данные хранить визвращённой форме. И будет у вас счастье.
 

jonjonson

Охренеть
Перечти свою задачу. Звучит так... Я его слепила из того что было. Как мне исправить лепку? Может нужно не лепить, а приводить к прозрачному управляемому виду?

Или веришь в супер универсальные регекспы от супер бескорыстного гуру по замене всего во всё?
 

sapphires

Новичок
Автор оригинала: jonjonson
Может нужно не лепить, а приводить к прозрачному управляемому виду?
У меня поставленная задача.
Получить ассоциативный массив. Что изначально не так?
 

jonjonson

Охренеть
Опиши задачу шире. Откуда данные берутся? Кто их так складывает? И т.д.
 

sapphires

Новичок
PHP:
$str = '<script type='text/javascript'>
var N1=[];
N1[0]=['00443676','443676','000241','1','7204','Soccer / Australia McInerney Ford Night Series 1st Division ','Rockingham City (N) ','Dianella White Eagles','0729','0',0,'0','1H 26\'','','True',1,'0',0,0,'0','0','0','1','3236954','0-0.5','1.920','1.920','h','3236953','2.0','1.930','1.890','','','','','3238437','0.0','1.540','2.428','','3238438','0.5','1.910','1.910','','','',''];
N1[1]=['222','2223','323','2','','','','','','',,'','','','True',1,'0',0,0,'0','0','0','1','3238435','0.5','2.234','1.650','h','3238436','2-2.5','2.176','1.670','','','','','3236950','0-0.5','2.562','1.480','h','3236949','0.5-1','2.315','1.580','','','',''];
N1[2]=['00443687','443687','001331','1','3034','Soccer / Turkey Youth League','Trabzonspor (Youth)(N)','Ankaragucu (Youth)','0729','0',0,'0','1H 29\'','','True',1,'0',0,1,'1','0','0','1','3237187','1.0','1.805','2.036','h','3237186','4.0','2.025','1.795','','','','','3238330','0-0.5','2.010','1.830','h','3238331','2.5','1.990','1.830','','','',''];
N1[3]=['','','','2','','','','','','',,'','','','True',1,'0',0,0,'0','0','0','1','3238328','1-1.5','2.307','1.605','h','3238329','4-4.5','2.351','1.560','','','','','3237183','0.5','2.754','1.410','h','3237182','2.5-3','2.369','1.550','','','',''];
</script>';
$ptrn = '#(N(\\d+)\\[(\\d+)\\]=\\[(.+)\\];)\\r?\\n#e';
$str = str_replace(',,',',null,',$str);
$x = preg_match_all($ptrn, $str, $out, PREG_SET_ORDER);
foreach($out as $v)
{
  if(isset($v[2]) && isset($v[3]) && isset($v[4]) )
  $n[$v[2]][$v[3]] = eval('return array('.$v[4].');' );
}
echo '<pre>';
print_r($n);
Переменная $str постоянно изменяется.

-~{}~ 06.02.09 17:56:

<img src="images/smilies/wink.gif" border="0" alt=""> єтого нет в моем сообщении - как оно появилось там я не имею представления. В теги
PHP:
я заключал код

-~{}~ 06.02.09 17:58:

в php теги
 

jonjonson

Охренеть
То есть, воруя чужой контент вы получаете не устраивающие вас данные (хотя странно, там джаваскрипт) и хотите к ним что-то приляпать учитывая цифру шесть где-то в данных?

Я перешёл на "вы", так как тема приобретает скользкий вариант.
 

jonjonson

Охренеть
sapphires, хорошо. Я вам верю. Но тогда ещё один наводящий вопрос. Вы типа там, откуда запрашиваете, не можете сформировать нужный вам код? И нахрена тянуть с удалённого своего хоста не данные, а хрень, которую ещё к "футболу" нужно за ушки притягивать?

А вообще... Пятница удалась :)
 

sapphires

Новичок
Разве не хорошая практика проверить свои силы в php?
И все таки - информацию я эту нигде и ни в каких целях не использую.
Какая разница в том, что если я посмотрю эти данные в браузере и сохраню себе на жесткий, или тоже самое сделаю с помощью php?
И все же тема открыта
 

dimagolov

Новичок
sapphires, тогда вперед и с песней самостоятельно. а учить кулхацкеров воровать контент тут никто не будет.

ща модеры тему прикроют
 

sapphires

Новичок
Никого воровать контент я не просил и не прошу.
Прочитайте задачу и дайте хоть какие-то решения или предложения больше я ничего не прошу.
А высказывания типа :
- Я вижу понимания нет и все такое -- Зачем? К чему?
 

jonjonson

Охренеть
sapphires, начинающий хирург просит научить вырезать гланды через прямую кишку... Куда его отправят?

-~{}~ 07.02.09 01:53:

Какая разница в том, что если я посмотрю эти данные в браузере и сохраню себе на жесткий, или тоже самое сделаю с помощью php?
Осторожнее... http://www.securitylab.ru/news/367472.php
 
Сверху