Всем привет, подскажите пожалуйста, у меня есть метод, в котором я доставал массив из БД, и подставлял значения уже в свой массив, после чего возвращал массив, выглядит это так: 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, то как потом возвращать этот массив вне цикла?
Массивы и циклы - это как соль и перец, где одно, там и другое, в чем проблема? А вот тут подробнее, пожалуйста. Не совсем понятно, что не так.
Может я не совсем корректно выражаюсь, мой метод загружает массив пост, после, я создаю свой массив $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 возвращать массив, то он будет его возвращать только если будет проходить циклом, но по сути в этом и заключается суть данного метода, так что вопрос изчерпывается)
Тебе твой foreach надо помистить в for , посчитать count-ом масив из бд и столько сделать итераций! примерно так где нужен ключ ставим переменную счетчика! есле не получилось или плохо объяснил кину код!
Если в foreach не давать массив, вас пошлют нахер. Если писать иЗчерпывается, то сразу видно что автор безграмотный и на php пишет как пишет по-русски. Сложные массивы в $_POST проходят рекурсией при необходимости. На уровне обработки кортежа, то есть одномерного массива, можно сделать с ним что угодно - смержить с другим, заменить значения, перевернуть и тп. Так вот, вместо того чтобы изображать как принято специалиста у которого специальная проблема, надо написать что вы там делаете и вам расскажут как это делается вообще. Добавлено спустя 16 минут 36 секунд: Тфу блин, я прочитал и подумал про $_POST. Массив из БД всегда одномерный, не выносите себе мозг строками, то есть набором кортежей. Ну то есть из БД всегда поступает массив вида array( 0=>array(), 1=>array(), ); Это не многомерный. В смысле в парадигме коллекций не сложный, а простой. Потому что там ровно 1 уровень вложения. $rows[0]['some_filed']; // на этом все кончается если сделать $row=$rows[0]; тот самый кортеж получим. Добавлено спустя 2 минуты 36 секунд: Почему на SO вникают в суть, а в РФ избегают вникать в суть? Позор какой-то скрывают что ли?