За последние 24 часа нас посетили 21802 программиста и 1070 роботов. Сейчас ищут 604 программиста ...

Массив

Тема в разделе "Прочие вопросы по PHP", создана пользователем ghostcom, 13 май 2018.

Метки:
  1. ghostcom

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

    С нами с:
    17 фев 2016
    Сообщения:
    92
    Симпатии:
    2
    Привет подскажите как такой массив перебрать?
    Код (Text):
    1.  
    2. $arrTr = Array (
    3.      [title] => Array ( [0] => name1 [1] => name2 [2] => name3 )
    4.      [file] => Array ( [0] => file1 [1] => file2 [2] => file3 )
    5.      [img] => Array ( [0] => img1 [1] => img2 [2] => img3 ) )
    к такому виду
    Код (Text):
    1.  
    2.  {'icon': '', 'title': '', 'file': ''},{'icon': '', 'title': '', 'file': ''},{'icon': '', 'title': '', 'file': ''}
    Мой код
    Код (Text):
    1.  
    2.  
    3.         $i = 0;
    4.         foreach($arrTr as $key => $value)
    5.         {
    6.             echo 'строка #'.$i;
    7.             echo "{'icon': '".$value->img. "', 'title': '".$value->title. "', 'file': '".$value->file. "'},";
    8.            
    9.             $i++;
    10.         }

    Вот тупень))))))
    Код (Text):
    1. foreach($arrTr as $key => $value)
    2.         {
    3.             foreach ($value as $v2) {
    4.                 echo $v2;
    5.             }
    6.         }
    Тема закрыта
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.750
    Симпатии:
    1.322
    Адрес:
    Лень
    json_encode php
     
    ghostcom нравится это.
  3. ghostcom

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

    С нами с:
    17 фев 2016
    Сообщения:
    92
    Симпатии:
    2
    А не, не то тема открыта))))
    --- Добавлено ---
    Код (Text):
    1. $arrTr = json_decode($params->get('list_anchors'), true );
    у меня и так этом массив из json_decode
    зачем его обратно?
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.750
    Симпатии:
    1.322
    Адрес:
    Лень
    прочти что ты написал, каждое слово в данной теме...
     
  5. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Если кол-во элементов в подмассивах одинаковое:
    PHP:
    1. $keys = ['title', 'file', 'icon'];
    2. $output = [];
    3. foreach($arrTr['title'] as $i => $v) {
    4.     $output[] = array_combine($keys, array_column($arrTr, $i));
    5. }
    --- Добавлено ---
    В песочнице
     
    ghostcom нравится это.
  6. ghostcom

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

    С нами с:
    17 фев 2016
    Сообщения:
    92
    Симпатии:
    2
    Ну не перебрать, а вывести значения из массива чтоб получилось так

    Код (Text):
    1. {'icon': 'img1', 'title': 'title1', 'file': 'file`1'},{'icon': 'img2', 'title': 'title2', 'file': 'file2'},{'icon': 'img3', 'title': 'title3', 'file': 'file3'}
    Для того чтоб мне его использовать дальше в JS.
     
  7. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Вам шашечки или ехать? :D
    @MouseZver вам уже дал ответ.
     
  8. ghostcom

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

    С нами с:
    17 фев 2016
    Сообщения:
    92
    Симпатии:
    2
    Только что мне с этим делать.

    ваш пример приводит массив к правильному виду делаю так
    Код (Text):
    1. $arrTr = json_decode($params->get('list_anchors'), true );
    2.         //print_r($arrTr);
    3.      
    4.         $keys = ['title', 'file', 'img'];
    5.         $output = [];
    6.         foreach($arrTr['title'] as $i => $v) {
    7.             $output[] = array_combine($keys, array_column($arrTr, $i));
    8.          
    9.         }
    10.         foreach($output as $value)
    11.         {
    12.                 echo "{'icon': '".$value->img. "', 'title': '".$value->title. "', 'file': '".$value->file. "'},";
    13.         }
    и опять ни чего
     
  9. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Второй foreach не нужен. Просто преобразуем в формат JSON
    PHP:
    1. echo json_encode($output);
     
    ghostcom нравится это.
  10. ghostcom

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

    С нами с:
    17 фев 2016
    Сообщения:
    92
    Симпатии:
    2
    Спасибо все получилось!!!! Удачи вам!