Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: массивы
 
 автор: moonfox   (27.09.2015 в 04:05)   письмо автору
 
 

здравствуйте
подскажите пожалуйста, как из
[6] => Array
        (
            [0] => 37
            [id] => 37
            [1] => Контакты
            [title] => 
            [2] => 
        )

    [7] => Array
        (
            [0] => 38
            [id] => 38
            [1] => О проекте
            [title] => aaaa
            [2] => aaaa
        )

    [8] => Array
        (
            [0] => 38
            [id] => 38
            [1] => О проекте
            [title] => bbb
            [2] => bbb
        )

сделать
[6] => Array
        (
            [0] => 37
            [id] => 37
            [1] => Контакты
            [title] => 
            [2] => 
        )

    [7] => Array
        (
            [0] => 38
            [id] => 38
            [1] => О проекте
            [title] => array(
                                    [0] =>aaaa
                                    [1] => bbb
                                   )
            [2] => array(
                                    [0] =>aaaa
                                    [1] => bbb
                                   )
        )

  Ответить  
 
 автор: elenaki   (27.09.2015 в 08:53)   письмо автору
 
   для: moonfox   (27.09.2015 в 04:05)
 

Вложенный цикл?

  Ответить  
 
 автор: moonfox   (27.09.2015 в 13:23)   письмо автору
 
   для: elenaki   (27.09.2015 в 08:53)
 

как сопоставить принадлежность?

  Ответить  
 
 автор: confirm   (27.09.2015 в 13:25)   письмо автору
 
   для: moonfox   (27.09.2015 в 04:05)
 

Для начала не использовать mysql_fetch_array()

  Ответить  
 
 автор: moonfox   (27.09.2015 в 18:10)   письмо автору
 
   для: confirm   (27.09.2015 в 13:25)
 

а есть ли разница
mysql_fetch_assoc / mysql_fetch_row

и

mysql_fetch_array с (MYSQL_ASSOC / MYSQL_NUM)

  Ответить  
 
 автор: confirm   (27.09.2015 в 19:16)   письмо автору
 
   для: moonfox   (27.09.2015 в 18:10)
 

А стоило ли задавать такой вопрос после этого?

[0] => 38
[id] => 38
[1] => О проекте
[title] => aaaa
[2] => aaaa

Это называется - с дури взять все, что даже и негоже.

  Ответить  
 
 автор: moonfox   (27.09.2015 в 19:28)   письмо автору
 
   для: confirm   (27.09.2015 в 19:16)
 

ну.....
1. вопрос был изначально лишь о том, как сгруппировать массив из примера и только
2. я уточнил по ходу, есть ли разница между параметром для fetch_array, указывающий на тип массива и ф-ми, предназначенными для этих массивов (ассоциативного и нумерованного)

ответить можно?))))

  Ответить  
 
 автор: confirm   (27.09.2015 в 23:06)   письмо автору
 
   для: moonfox   (27.09.2015 в 19:28)
 

Чего вы уточнили? Рассуждения по поводу разницы? А как вы думаете есть она или нет?

Вы, как говорится, с дури хапнули все, а потом ставите вопрос как из... получить.... Ну ежику же понятно, что коли хотим работать с массивом, то мы должны знать что имеем в нем - индексы или ключи. А вы посмотрите на кашу своего массива - есть дубликаты данных, индексы и ключи, есть и в гордом одиночестве - только под индексом.

А если есть порядок, то операция простая:

- можно получить пересечением массива по значениям, после чего по ключам/индексам из исходного массива взять только то, что нужно
- нужно к полученному добавить элементы, значит получаем только необходимые элементы по ключам. В версии 5.5.0 и выше это можно сделать функцией array_column(), в версии ниже пользовательским ее аналогом:

<?
if(!function_exists("array_column")) {
    function 
array_column(array $array$column_key$index_key=null) {
        
$a = array();
        
array_map(function($e) use(&$a$column_key$index_key) {
            
$index_key $a[$e[$index_key]] =  $e[$column_key] : $a[] = $e[$column_key];
        }, 
$array);
        return 
$a;
    }
}


- функцией array_map() с первым параметром равным null можно из наборов-массивов создать массив массивов.

Кроме того, функции пересечения массивов могут помочь отсортировать массив по заданным ключам/индексам.

  Ответить  
 
 автор: moonfox   (28.09.2015 в 00:26)   письмо автору
 
   для: confirm   (27.09.2015 в 23:06)
 

 А как вы думаете есть она или нет?

риторический вопрос,
давайте иначе,
ваш совет fetch_array со вторым параметром или же assoc/num_rows?

  Ответить  
 
 автор: confirm   (29.09.2015 в 00:52)   письмо автору
 
   для: moonfox   (28.09.2015 в 00:26)
 

Меньше риторики и больше по потребности. Ведь суть не в том получить массив функций ли fetch_array с параметром нужным или же одной из fetch_xxx, а в том, что нужно получать тот тип массива данных, который нам более удобен в конкретном случае. А уж чем вы его получите это не важно.

А что если получая так массив, как у вас в примере, вы будете загребать и BLOB данные приличного размера? Надо же отдавать себе отчет, что делаем. И не только на массивах индексных или ассоциативных свет клином сошелся, если не предполагается работа с функциями обработки массива, может быть удобнее получать объекты mysql_fetch_object(), что упрощает в написании код при обращении к элементам ряда. Если вывод ресурса это простой вывод данных в таблицу, то не важно под ключами или индексами вернулся результат, ибо будет простая операция implode("тег_ячейки", array_map("htmlspecialchars", массив)). Есть и другие наборы, например FETCH_KEY_PAIR в PDO вернет массив в котором ключами будут значения первого поля запроса, а значениями значения второго поля запроса (аналогично работе функции array_column с указанием третьего параметра).

А получать строки из ресурса скопом потому, что fetch_array() и хватит, это не думать. А такая выборка тоже нужна в некоторых ситуациях, если знать о разнице результата объединения ассоциативных и индексных массивов.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования