За последние 24 часа нас посетили 19339 программистов и 1615 роботов. Сейчас ищут 868 программистов ...

Многомерный массив

Тема в разделе "PHP для новичков", создана пользователем Wahtel, 24 ноя 2014.

  1. Wahtel

    Wahtel Новичок

    С нами с:
    24 ноя 2014
    Сообщения:
    6
    Симпатии:
    0
    Всем привет, подскажите пожалуйста, у меня есть метод, в котором я доставал массив из БД, и подставлял значения уже в свой массив, после чего возвращал массив, выглядит это так:

    public function getKeyWords()
    {
    $options = $this->getOptions('linkBuilderOptions');

    $keyWords = array(
    'key' => $options['word'],
    'url' => $options['link']
    );
    return $keyWords;
    } // end getKeyWords

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

    выглядет этот многомерный массив вот так:

    Array
    (
    [linkbuilder] => Array
    (
    [0] => Array
    (
    [word] => lorem
    [link] => dou.ua
    )

    [1] => Array
    (
    [word] => hkjhkjhjk
    [link] => lololo
    )

    [2] => Array
    (
    [word] =>
    [link] =>
    )
    мне надо наверно сделать что то типа такого:
    $keyWords = array(
    'linkbuilder' => array(
    'тут надо ключ' => array(
    'key' => $options['word'],
    'url' => $options['link']
    )
    )
    );
    Не понимаю как туда подставлять ключ, без обхода этого массива циклом foreach, а если я буду использовать цикл foreach, то как потом возвращать этот массив вне цикла?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Массивы и циклы - это как соль и перец, где одно, там и другое, в чем проблема?

    А вот тут подробнее, пожалуйста. Не совсем понятно, что не так.
     
  3. Wahtel

    Wahtel Новичок

    С нами с:
    24 ноя 2014
    Сообщения:
    6
    Симпатии:
    0
    Может я не совсем корректно выражаюсь, мой метод загружает массив пост, после, я создаю свой массив $keywords, и туда поставляю значения массива пост, для того что бы потом, вызвать этот метод в другом, и там уже этот массив перекинуть на страницу, где эти слова будут записываться в ссылку, особо я думаю тут не стоит вникать в суть.
    Как я уже сказал, мой метод потом возвращает мой массив со значениями из поста, но поскольку массив пост многомерный, этот массив я тоже должен сделать многомерным, тоесть если было так:

    public function getKeyWords()
    {
    $options = $this->getOptions('linkBuilderOptions');

    $keyWords = array(
    'key' => $options['word'],
    'url' => $options['link']
    );
    return $keyWords;

    то должно получается теперь быть примерно так:

    public function getKeyWords()
    {
    $options = $this->getOptions('linkBuilderOptions');

    foreach ($options['linkbuilder'] as $key => $item) {
    $keyWords = array(
    $options['linkbuilder'] => array(
    $key => array(
    'key' => $item['word'],
    'url' => $item['link']
    ),
    )
    );
    return $keyWords;
    }
    } // end getKeyWords
    } // end getKeyWords

    и тут я хочу задать два нубских вопроса, первый:
    корректно ли я изменил структуру старого массива, и второй:
    Почему то я думал, что если в foreach возвращать массив, то он будет его возвращать только если будет проходить циклом, но по сути в этом и заключается суть данного метода, так что вопрос изчерпывается)
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Так, начнем с того, что есть волшебный тег [code=php][/code]
    Будьте добры, обрамите им ваш код.
     
  5. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    Тебе твой foreach надо помистить в for , посчитать count-ом масив из бд и столько сделать итераций!
    примерно так где нужен ключ ставим переменную счетчика! есле не получилось или плохо объяснил кину код!
     
  6. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    Если в foreach не давать массив, вас пошлют нахер. Если писать иЗчерпывается, то сразу видно что автор безграмотный и на php пишет как пишет по-русски.

    Сложные массивы в $_POST проходят рекурсией при необходимости. На уровне обработки кортежа, то есть одномерного массива, можно сделать с ним что угодно - смержить с другим, заменить значения, перевернуть и тп.

    Так вот, вместо того чтобы изображать как принято специалиста у которого специальная проблема, надо написать что вы там делаете и вам расскажут как это делается вообще.

    Добавлено спустя 16 минут 36 секунд:
    Тфу блин, я прочитал

    и подумал про $_POST.

    Массив из БД всегда одномерный, не выносите себе мозг строками, то есть набором кортежей. Ну то есть из БД всегда поступает массив вида

    array(
    0=>array(),
    1=>array(),
    );

    Это не многомерный. В смысле в парадигме коллекций не сложный, а простой. Потому что там ровно 1 уровень вложения.

    $rows[0]['some_filed']; // на этом все кончается

    если сделать

    $row=$rows[0];

    тот самый кортеж получим.

    Добавлено спустя 2 минуты 36 секунд:
    Почему на SO вникают в суть, а в РФ избегают вникать в суть? Позор какой-то скрывают что ли?
     
  7. metadon

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

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Тут учат самостоятельно думать, хотя по настроению