|
|
|
| Здравствуйте.
Есть многомерный массив:
$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. Подскажите, как это сделать. Я новичок и не знаю алгоритмы работы с массивами | |
|
|
|
|
|
|
|
для: австр
(28.03.2014 в 15:32)
| | австр, массив получаете из БД? | |
|
|
|
|
|
|
|
для: Valick
(28.03.2014 в 16:38)
| | А разница есть, если учесть постановку вопроса? Что значит уникальные, то есть какие именно взять, если предположить, что значения других полей уникальны все, и что значит "остальные", как они могут быть не уникальны? | |
|
|
|
|
|
|
|
для: confirm
(28.03.2014 в 16:52)
| | >А разница есть, если учесть постановку вопроса?
да | |
|
|
|
|
|
|
|
для: Valick
(28.03.2014 в 18:07)
| | Ну тогда попытайтесь объяснить суть требуемого. | |
|
|
|
|
|
|
|
для: Valick
(28.03.2014 в 16:38)
| | Нет. Есть такой массив в условии задачи и надо выбрать нужные элементы | |
|
|
|
|
|
|
|
для: австр
(28.03.2014 в 15:32)
| | надо использовать сортировку массивов. usort ищите. | |
|
|
|
|
|
|
|
для: Enter
(28.03.2014 в 17:38)
| | С какого это перепуга сортировка и уникальность стали синонимами? | |
|
|
|
|
|
|
|
для: confirm
(28.03.2014 в 17:46)
| | отсортировать, а потом выбрать уникальные значения | |
|
|
|
|
|
|
|
для: Enter
(28.03.2014 в 17:50)
| | Чтобы выбрать уникальные значения сортировка совсем не нужна. | |
|
|
|
|
|
|
|
для: confirm
(28.03.2014 в 17:59)
| | ну да. тоже можно. | |
|
|
|
|
|
|
|
для: confirm
(28.03.2014 в 17:59)
| | А что нужно? | |
|
|
|
|
|
|
|
для: австр
(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(), может тогда вы сможете пояснить чего хотите, и что означает все остальные и для чего? | |
|
|
|
|
|
|
|
для: confirm
(31.03.2014 в 04:57)
| | Спасибо, буду разбиратся с функциями | |
|
|
|