За последние 24 часа нас посетили 18747 программистов и 1603 робота. Сейчас ищут 928 программистов ...

Массив в массив

Тема в разделе "PHP для новичков", создана пользователем kentastik77, 31 янв 2012.

  1. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    Имеется массив вида:
    Код (Text):
    1.  '1'=>array('13.08.2011', 'Блэкберн ', '1:2', 'Вулверхэмптон ', '01'), '2'=>array('13.08.2011', 'Куинз Парк Рейнджерс ', '0:4', 'Болтон ', '01') .... .... ....
    как сделать из этого такое:
    Код (Text):
    1.  '1'=>array('13.08.2011', 'Блэкберн ', '1','2', 'Вулверхэмптон ', '01'), '2'=>array('13.08.2011', 'Куинз Парк Рейнджерс ', '0','4', 'Болтон ', '01') .... .... ....
    для невнимательных: смотрим на счёт.
     
  2. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    split, explode
    array_chunk
     
  3. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    жаль что сплит устарел, он мне больше всего понравился....
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
  5. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    к сожалению в регулярках ничего не могу понять... даже если я напишу сам выражение через 2 часа сам не пойму что там откуда :(
     
  6. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Код (PHP):
    1. $arr = array('13.08.2011', 'Блэкберн ', '1:2', 'Вулверхэмптон ', '01');
    2. $tmp = array();
    3. while($value = array_shift($arr)) {
    4.     foreach(preg_split('#:#',$value) as $elm)
    5.         array_push($tmp,$elm); 
    6. }
    7. print_r($tmp);
    8. /*
    9. Array
    10. (
    11.     [0] => 13.08.2011
    12.     [1] => Блэкберн 
    13.     [2] => 1
    14.     [3] => 2
    15.     [4] => Вулверхэмптон 
    16.     [5] => 01
    17. )
    18.  
    19. */
    20.  
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    эксплод вы не любите по религиозным соображениям? =)
     
  8. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    спасибо за этот код. стало немножко понятнее, но не совсем. каким образом осуществить перебор существующего массива?
    то есть, если написать $arr = array($mymassive); в первой строке то я увижу старый массив на выходе.

    Добавлено спустя 2 минуты 29 секунд:
    ой, накосячил. выводил просто не ту переменную, если написать $arr = $mymassive; то на выходе пустой массив. вот...
     
  9. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Пример был написан для реализации работы с внутренним массивом.
    Ваша задача осуществить перебор общего массива и применить к его аррай-элементам реализацию подобной той что я показал в качестве примера.

    Не старайтесь копипастить.
    Вчитывайтесь в примеры.
    Ваша задача понять суть, а не скопировать код в надежде, что все будет работать.
     
  10. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    ну я вроде стараюсь вчитываться перед тем как скопипастить :)
    я правильно понял, что перед предыдущим кодом мы делаем foreach($mymassive as $value) ?
     
  11. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    правильно )
     
  12. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    Код (Text):
    1. foreach ($bu as $value) { //перебираем мой исходный массив
    2. $arr = $bu;
    3. $tmp = array();
    4. while($value = array_shift($arr)) { //выбираем значения массива
    5.     foreach(preg_split('#:#',$value) as $elm) // отрезаем всё что до ":"
    6.         array_push($tmp,$elm);  //склеиваем "до" и "после"
    7. }
    8. }
    9.         print_r($tmp);//выводим новый массив
    что я делаю не так?
     
  13. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Код (PHP):
    1. - $arr = $bu; 
    2. + $arr = $value; 
    3.  
    4. Также стоит обратить внимание на $tmp;
    5.  
     
  14. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    P.S. комментарии для того чтобы понять как я это понял :) может быть я неправильно истолковал что-то?

    Добавлено спустя 1 минуту 42 секунды:
    наверное еще что-то неправильно потому как пустой экран наблюдаю :(
     
  15. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Если Вы хотите понимать, что делаете то тут мне уже Вам помогать нечем. Решение задачи уже на поверхности, Вам осталось лишь воспользоваться этим.

    Код (PHP):
    1. foreach ($bu as $key => $val) { //перебираем мой исходный массив
    2. $arr = $val; 
    3. $tmp = array();
    4. while($value = array_shift($arr)) { //выбираем значения массива
    5.     foreach(preg_split('#:#',$value) as $elm) // отрезаем всё что до ":"
    6.         array_push($tmp,$elm);  //склеиваем "до" и "после"
    7.   }
    8.   $bu[$key] = $tmp;
    9. }
    10.       print_r($bu);//выводим новый массив
    11.  
     
  16. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    при таком коде я имею на выхлопе изначальный массив :(
     
  17. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Да, только Ваши "1:2" уже как значения массива.

    Код (PHP):
    1. $bu = array(
    2.     array('13.08.2011', 'Блэкберн ', '1:2', 'Вулверхэмптон ', '01'),
    3.     array('13.08.2011', 'Куинз Парк Рейнджерс ', '0:4', 'Болтон ', '01'),
    4. );
    5.  
    6. print_r($bu);
    7.  
    8. foreach ($bu as $key => $val) { //перебираем мой исходный массив
    9. $arr = $val; 
    10. $tmp = array();
    11. while($value = array_shift($arr)) { //выбираем значения массива
    12.     foreach(preg_split('#:#',$value) as $elm) // отрезаем всё что до ":"
    13.         array_push($tmp,$elm);  //склеиваем "до" и "после"
    14.   }
    15.   $bu[$key] = $tmp;
    16. }
    17.  
    18. print_r($bu);//выводим новый массив
    19.  
    Код (Text):
    1.  
    2. Array
    3. (
    4.     [0] => Array
    5.         (
    6.             [0] => 13.08.2011
    7.             [1] => Блэкберн
    8.             [2] => 1:2
    9.             [3] => Вулверхэмптон
    10.             [4] => 01
    11.         )
    12.  
    13.     [1] => Array
    14.         (
    15.             [0] => 13.08.2011
    16.             [1] => Куинз Парк Рейнджерс
    17.             [2] => 0:4
    18.             [3] => Болтон
    19.             [4] => 01
    20.         )
    21.  
    22. )
    23. Array
    24. (
    25.     [0] => Array
    26.         (
    27.             [0] => 13.08.2011
    28.             [1] => Блэкберн
    29.             [2] => 1
    30.             [3] => 2
    31.             [4] => Вулверхэмптон
    32.             [5] => 01
    33.         )
    34.  
    35.     [1] => Array
    36.         (
    37.             [0] => 13.08.2011
    38.             [1] => Куинз Парк Рейнджерс
    39.             [2] => 0
    40.             [3] => 4
    41.             [4] => Болтон
    42.             [5] => 01
    43.         )
    44.  
    45. )
     
  18. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    я кажется начал понимать откуда ноги растут. в массиве не совсем так как я написал в первом посте.
    Всё дело в том, что у меня остались ссылки по ходу. вот пример выполнения скрипта http://robokapper.bet-school.com/parser/parser.php наверное если избавится от лишнего текста в виде ссылок всё заработает. Я прав?
     
  19. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
  20. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    муть какая-то. ничего не помогает :'(
     
  21. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    var_dump(твой массив) в студию, ну хотя бы пару строк.
    А лучше мне в личку пульнуть.
     
  22. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0