Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

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

 

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

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

тема: Массивы
 
 автор: австр   (28.03.2014 в 15:32)   письмо автору
 
 

Здравствуйте.
Есть многомерный массив:

$array = array(
    '2014-03-15' => array(
        array(
            'qw' => 'qwerty',
            'pr' => 1600,
            'n' => 4,
        ),
        array(
            'qw' => 'qwerty2',
            'pr' => 1200,
            'n' => 3,
        ),
        
        array(
            'qw' => 'qwerty2',
            'pr' => 1300,
            'n' => 4,
        ),
        
        array(
            'qw' => 'qwerty',
            'pr' => 1200,
            'n' => 5,
        ),
        array(
            'qw' => 'qwerty2',
            'pr' => 1400,
            'n' => 4,
        ),
    ),
    '2014-03-16' => array(
        array(
            'qw' => 'qwerty',
            'pr' => 1200,
            'n' => 4,
        ),
        array(
            'qw' => 'qwerty2',
            'pr' => 1700,
            'n' => 3,
        ),
        
        array(
            'qw' => 'qwerty2',
            'pr' => 1200,
            'n' => 4,
        ),
        
        array(
            'qw' => 'qwerty',
            'pr' => 1300,
            'n' => 5,
        ),
        array(
            'qw' => 'qwerty2',
            'pr' => 1200,
            'n' => 4,
        ),
    ),
);


Мне надо следующее сделать. Получить уникальные значения полей qw и n для всех дат. После этого массивы с датами разбить на два массива. в первом массиве должны быть уникальные значения полей pr, а во втором остальные значения полей pr. Подскажите, как это сделать. Я новичок и не знаю алгоритмы работы с массивами

  Ответить  
 
 автор: Valick   (28.03.2014 в 16:38)   письмо автору
 
   для: австр   (28.03.2014 в 15:32)
 

австр, массив получаете из БД?

  Ответить  
 
 автор: confirm   (28.03.2014 в 16:52)   письмо автору
 
   для: Valick   (28.03.2014 в 16:38)
 

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

  Ответить  
 
 автор: Valick   (28.03.2014 в 18:07)   письмо автору
 
   для: confirm   (28.03.2014 в 16:52)
 

>А разница есть, если учесть постановку вопроса?
да

  Ответить  
 
 автор: confirm   (28.03.2014 в 18:11)   письмо автору
 
   для: Valick   (28.03.2014 в 18:07)
 

Ну тогда попытайтесь объяснить суть требуемого.

  Ответить  
 
 автор: австр   (30.03.2014 в 18:40)   письмо автору
 
   для: Valick   (28.03.2014 в 16:38)
 

Нет. Есть такой массив в условии задачи и надо выбрать нужные элементы

  Ответить  
 
 автор: Enter   (28.03.2014 в 17:38)   письмо автору
 
   для: австр   (28.03.2014 в 15:32)
 

надо использовать сортировку массивов. usort ищите.

  Ответить  
 
 автор: confirm   (28.03.2014 в 17:46)   письмо автору
 
   для: Enter   (28.03.2014 в 17:38)
 

С какого это перепуга сортировка и уникальность стали синонимами?

  Ответить  
 
 автор: Enter   (28.03.2014 в 17:50)   письмо автору
 
   для: confirm   (28.03.2014 в 17:46)
 

отсортировать, а потом выбрать уникальные значения

  Ответить  
 
 автор: confirm   (28.03.2014 в 17:59)   письмо автору
 
   для: Enter   (28.03.2014 в 17:50)
 

Чтобы выбрать уникальные значения сортировка совсем не нужна.

  Ответить  
 
 автор: Enter   (28.03.2014 в 17:59)   письмо автору
 
   для: confirm   (28.03.2014 в 17:59)
 

ну да. тоже можно.

  Ответить  
 
 автор: австр   (30.03.2014 в 18:41)   письмо автору
 
   для: confirm   (28.03.2014 в 17:59)
 

А что нужно?

  Ответить  
 
 автор: confirm   (31.03.2014 в 04:57)   письмо автору
 
   для: австр   (30.03.2014 в 18:41)
 

Во-первых нужно изучать то, чем хотите оперировать - функции для работы с массивами.

Но задача, условие которой вы описываете, это нечто уникальное.

>Получить уникальные значения полей qw и n для всех дат.

Это не является проблемой, стоит только заглянуть по ссылке указанной. Для этого проходом в цикле нужно получить все элементы qw каждого вхождения (ключей даты), а затем получить среди них уникальные значения. Для версий РНР ниже 5.5, это можно сделать следующим образом:

<?
//это просто поясняющий пример
echo '<pre>';
foreach(
$array as $v) {
    
print_r($v); //$v представляет массивы каждого вхождения
    //получить все элементы qw, а так как этот элемент является первым, 
    //то и получаем текущий элементы каждого вложения массива $v
    
$qw array_map('current'$v);
    
//вот как будет выглядеть этот массив
    
print_r($qw);
    
//получаем только уникальные значения этого массива
    
$qw array_unique($qw);
    
print_r($qw); //массив $qw содержит теперь только уникальные значения
    //в общем всю эту операцию в цикле для каждого ключа даты можно записать так:
    
$qw array_unique(array_map('current'$v));
}


В версии 5.5 можно непосредственно указать ключ вхождения интересующий нас, то есть в этой версии можно получить так:

<?
foreach($array as $v) {
    
$qw array_unique(array_column($v'qw'1));
}    


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

>После этого массивы с датами разбить на два массива. в первом массиве должны быть уникальные значения полей pr, а во втором остальные значения полей pr.

понять умом не представляется возможным. Допустим возьмем простой массив:

$a = [1,3,4,5,4,2,7,3];

Если получить его уникальные значения, то получим массив значений - 1,3,4,5,2,7.

Вопрос - а "все остальные" значения этого массива, это какие? А тем более, если учесть, что уникальность ваших ключей qw даст одни значения, а связанные с ними ключи pr совсем иные.

Прочтите по ссылке указанной как работает функция array_unique(), может тогда вы сможете пояснить чего хотите, и что означает все остальные и для чего?

  Ответить  
 
 автор: австр   (02.04.2014 в 15:54)   письмо автору
 
   для: confirm   (31.03.2014 в 04:57)
 

Спасибо, буду разбиратся с функциями

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

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