PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
papagot
Отправлено: 26 Февраля, 2014 - 18:28:22
Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Март 2011
Откуда: Riga, Latvia
Помог: 0 раз(а)
EuGen пишет: papagot пишет: Извиняюсь за сарказм и тупой вопрос а куда вписывать переменную с массивам что выводить и как?
$data - исходный массив. $result - итог без дубликатов.
До применения кода
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
(
(
[ 0] => 12
(
[ mid] => 15780
[ out] => 0
[ uid] => 50714197
[ read_state] => 0
[ title] => ...
[ body] => я тоже
)
(
[ mid] => 15524
[ out] => 0
[ uid] => 16877930
[ read_state] => 0
[ title] => ...
[ body] => иди ко мне за стол!!!!!!!!
)
(
[ mid] => 15489
[ out] => 0
[ uid] => 16877930
[ read_state] => 0
[ title] => ...
[ body] => пошли в бутылку?) ) )
)
(
[ mid] => 15446
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => одд
)
(
[ mid] => 15445
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => олджлдж
)
(
[ mid] => 15444
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => олдолд
)
(
[ mid] => 15443
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => олдолд
)
(
[ mid] => 15442
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => одлолд
)
(
[ mid] => 15441
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => олждлдж
)
(
[ mid] => 15440
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => олдолд
)
(
[ mid] => 15439
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => тлдолд
)
(
[ mid] => 15438
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => бобюь
)
)
)
написал
на выходе получил...
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
(
(
[ 0] => 12
(
[ mid] => 15780
[ out] => 0
[ uid] => 50714197
[ read_state] => 0
[ title] => ...
[ body] => я тоже
)
(
[ mid] => 15524
[ out] => 0
[ uid] => 16877930
[ read_state] => 0
[ title] => ...
[ body] => иди ко мне за стол!!!!!!!!
)
(
[ mid] => 15489
[ out] => 0
[ uid] => 16877930
[ read_state] => 0
[ title] => ...
[ body] => пошли в бутылку?) ) )
)
(
[ mid] => 15446
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => одд
)
(
[ mid] => 15445
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => олджлдж
)
(
[ mid] => 15444
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => олдолд
)
(
[ mid] => 15443
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => олдолд
)
(
[ mid] => 15442
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => одлолд
)
(
[ mid] => 15441
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => олждлдж
)
(
[ mid] => 15440
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => олдолд
)
(
[ mid] => 15439
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => тлдолд
)
(
[ mid] => 15438
[ out] => 0
[ uid] => 85290242
[ read_state] => 0
[ title] => ...
[ body] => бобюь
)
)
)
Что не так? Растолкуйте где ошибся снова ((((
papagot
Отправлено: 26 Февраля, 2014 - 19:25:24
Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Март 2011
Откуда: Riga, Latvia
Помог: 0 раз(а)
EuGen пишет: papagot пишет:
Что не так? Растолкуйте где ошибся снова ((((
Ну так применять нужно не ко всему массиву, а к той его части, в которой содержатся элементы, которые нужно фильтровать. В данном случае к
Огромное спасибо. Карму увеличил.
Только вот пару вопрос если можно то можно нет так нет
на выходе массив
Array
(
[БЫЛО НЕ ПУСТО ] => 12
[ОСТАВИТЬ ПРЕЖНИЕ ИД ] => Array
(
[mid] => 15780
[date] => 1393353992
[out] => 0
[uid] => 50714197
[read_state] => 0
[title] => ...
[body] => я тоже
)
[16877930] => Array
(
[mid] => 15489
[date] => 1393250976
[out] => 0
[uid] => 16877930
[read_state] => 0
[title] => ...
[body] => пошли в бутылку?)))
)
[85290242] => Array
(
[mid] => 15438
[date] => 1393200589
[out] => 0
[uid] => 85290242
[read_state] => 0
[title] => ...
[body] => бобюь
)
)(Отредактировано автором: 26 Февраля, 2014 - 19:31:17)
MAXUS
Отправлено: 26 Февраля, 2014 - 19:40:42
Посетитель
Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011
Помог: 7 раз(а)
EuGen пишет:
Да сколько же можно.
EuGen пишет: применить array_values() к результату.
То, что элементы без ключей считаются одинаковыми - собственно, прямое следствие поставленной задачи. И по-другому их интерпретировать считаю некорректным.
Задача звучала так: "мне нужно что бы удались все элементы из массива с одинаковым значением uid и остался только последний элемент."
Заменить исходный массив и удалить из него элементы - это не одно и то же. Если при этом существуют указатели (&) на элементы исходного массива или в нем самом присутствуют указатели, то связи похерятся. Также, если на ключи массива где-то ссылались хардкодом, то эти ссылки тоже работать перестанут, потому что ключи в вашем случае переименуются. Если все это для задачи не критично, то ничего в этом страшного нет. Я просто хотел подчеркнуть эти нюансы.
А вот удалить элементы с одинаковыми uid и удалить элементы без uid - это, кмк, разные задачи. Тем более, когда видно, что массив не однородный.
(Добавление)
papagot пишет: EuGen пишет: papagot пишет:
Что не так? Растолкуйте где ошибся снова ((((
Ну так применять нужно не ко всему массиву, а к той его части, в которой содержатся элементы, которые нужно фильтровать. В данном случае к
Огромное спасибо. Карму увеличил.
Только вот пару вопрос если можно то можно нет так нет
на выходе массив
Array
(
[
БЫЛО НЕ ПУСТО ] => 12
[
ОСТАВИТЬ ПРЕЖНИЕ ИД ] => Array
(
[mid] => 15780
[date] => 1393353992
[out] => 0
[uid] => 50714197
[read_state] => 0
[title] => ...
[body] => я тоже
)
[16877930] => Array
(
[mid] => 15489
[date] => 1393250976
[out] => 0
[uid] => 16877930
[read_state] => 0
[title] => ...
[body] => пошли в бутылку?)))
)
[85290242] => Array
(
[mid] => 15438
[date] => 1393200589
[out] => 0
[uid] => 85290242
[read_state] => 0
[title] => ...
[body] => бобюь
)
)
Мы тут яростно дискутируем на эту тему... Чем вас мой вариант не устроил? Все ваши "а можно" в нем учтены.(Отредактировано автором: 26 Февраля, 2014 - 19:44:25)
papagot
Отправлено: 26 Февраля, 2014 - 19:56:10
Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Март 2011
Откуда: Riga, Latvia
Помог: 0 раз(а)
Цитата: Мы тут яростно дискутируем на эту тему... Чем вас мой вариант не устроил? Все ваши "а можно" в нем учтены.
Я проста пока не уловил а как тогда потом скажем доставать оставшиеся uid на автомате может я конечно чего то не догоняю... Но я предстоял удалить дубли а потом по циклу
PHP:
скопировать код в буфер обмена
$d = 1 ;
while ( $d <= $unread_messages_get [ 'response' ] [ 0 ] )
{
//получаем $unread_messages_get['response'][$d]['uid']
$d ++;
}
Сейчас же я пока не догоняю как мне их достать....
MAXUS
Отправлено: 26 Февраля, 2014 - 19:59:23
Посетитель
Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011
Помог: 7 раз(а)
papagot пишет:
Я проста пока не уловил а как тогда потом скажем доставать оставшиеся uid на автомате может я конечно чего то не догоняю... Но я предстоял удалить дубли а потом по циклу
Сейчас же я пока не догоняю как мне их достать....
Щас. Секунду...
Вот так...
Если надо удалить дубли и оставить первый встретившийся, то:
PHP:
скопировать код в буфер обмена
$data =& $unread_messages_get [ 'response' ] ;
foreach ( $data as $key => $value ) {
if ( ! $value [ 'uid' ] ) continue ;
if ( ! $check [ $value [ 'uid' ] ] ) $check [ $value [ 'uid' ] ] = true ;
}
Если надо удалить дубли и оставить последний встретившийся, то:
PHP:
скопировать код в буфер обмена
$data =& $unread_messages_get [ 'response' ] ;
foreach ( $data as $key => $value ) {
if ( ! $value [ 'uid' ] ) continue ;
if ( $check [ $value [ 'uid' ] ] ) unset ( $data [ $check [ $value [ 'uid' ] ] ] ) ; $check [ $value [ 'uid' ] ] = $key ;
}
(Отредактировано автором: 26 Февраля, 2014 - 20:15:04)
papagot
Отправлено: 26 Февраля, 2014 - 20:09:37
Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Март 2011
Откуда: Riga, Latvia
Помог: 0 раз(а)
MAXUS пишет: papagot пишет:
Я проста пока не уловил а как тогда потом скажем доставать оставшиеся uid на автомате может я конечно чего то не догоняю... Но я предстоял удалить дубли а потом по циклу
Сейчас же я пока не догоняю как мне их достать....
Щас. Секунду...
Вот так...
Если надо удалить дубли и оставить первый встретившийся, то:
PHP:
скопировать код в буфер обмена
$data =& $unread_messages_get [ 'response' ] ;
foreach ( $data as $key => $value ) {
if ( ! $value [ 'uid' ] ) continue ;
if ( ! $check [ $value [ 'uid' ] ] ) $check [ $value [ 'uid' ] ] = true ;
}
Если надо удалить дубли и оставить последний встретившийся, то:
PHP:
скопировать код в буфер обмена
$data =& $unread_messages_get [ 'response' ] ;
foreach ( $data as $key => $value ) {
if ( ! $value [ 'uid' ] ) continue ;
if ( $check [ $value [ 'uid' ] ] ) unset ( $data [ $check [ $value [ 'uid' ] ] ] ) ; $check [ $value [ 'uid' ] ] = $key ;
}
Ок и какая переменная за вывод отвечает?
MAXUS
Отправлено: 26 Февраля, 2014 - 20:15:37
Посетитель
Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011
Помог: 7 раз(а)
papagot пишет:
Ок и какая переменная за вывод отвечает?
А доставать так:
PHP:
скопировать код в буфер обмена
foreach ( $unread_messages_get [ 'response' ] as $key => $message ) {
// Где $message - это каждый элемент с мессаджем, а "доставать" так: $message['uid'], $message['date'] и т.п.
// А $key - ключ элемента массива с мессаджем
}
Вот это запусти и все поймешь...
(Отредактировано автором: 26 Февраля, 2014 - 20:17:54)
papagot
Отправлено: 26 Февраля, 2014 - 20:23:55
Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Март 2011
Откуда: Riga, Latvia
Помог: 0 раз(а)
MAXUS пишет: papagot пишет:
Ок и какая переменная за вывод отвечает?
А доставать так:
PHP:
скопировать код в буфер обмена
foreach ( $unread_messages_get [ 'response' ] as $key => $message ) {
// Где $message - это каждый элемент с мессаджем, а "доставать" так: $message['uid'], $message['date'] и т.п.
// А $key - ключ элемента массива с мессаджем
}
Вот это запусти и все поймешь...
А вы знаете ваш вариант меня полностью устраивает. Покрайне мере на данной стадии. Огромное спасибо вам.
MAXUS
Отправлено: 26 Февраля, 2014 - 20:26:27
Посетитель
Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011
Помог: 7 раз(а)
papagot пишет:
А вы знаете ваш вариант меня полностью устраивает. Покрайне мере на данной стадии. Огромное спасибо вам.
Да пожалуйста
Там слева кнопка
papagot
Отправлено: 26 Февраля, 2014 - 20:28:02
Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Март 2011
Откуда: Riga, Latvia
Помог: 0 раз(а)
MAXUS пишет: papagot пишет:
А вы знаете ваш вариант меня полностью устраивает. Покрайне мере на данной стадии. Огромное спасибо вам.
Да пожалуйста
Там слева кнопка
Уже нажал )))
MAXUS
Отправлено: 26 Февраля, 2014 - 20:32:32
Посетитель
Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011
Помог: 7 раз(а)
papagot пишет: MAXUS пишет: papagot пишет:
А вы знаете ваш вариант меня полностью устраивает. Покрайне мере на данной стадии. Огромное спасибо вам.
Да пожалуйста
Там слева кнопка
Уже нажал )))
Уххх. Карма растет!
(Отредактировано автором: 26 Февраля, 2014 - 20:33:18)
papagot
Отправлено: 26 Февраля, 2014 - 21:14:29
Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Март 2011
Откуда: Riga, Latvia
Помог: 0 раз(а)
MAXUS пишет: papagot пишет: MAXUS пишет: papagot пишет:
А вы знаете ваш вариант меня полностью устраивает. Покрайне мере на данной стадии. Огромное спасибо вам.
Да пожалуйста
Там слева кнопка
Уже нажал )))
Уххх. Карма растет!
Вопрос тебе на засыпку по твоему же варианту написал
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
foreach ( $unread_messages_get [ 'response' ] as $key => $message ) {
$uid = $message [ 'uid' ] ;
$uid_get = $uid . "\n " ;
$file = fopen ( "$filename " , "r" ) ; //echo "Найден!";
}
else {
//echo "Не найден!";
}
}
$array = file ( $filename ) ; echo "<pre>" ;
echo "</pre>" ;
На выходе получаю
Так вот вопрос как сделать так что если найден элемент то пропускал бы а не писал пустое значение в файл.
MAXUS
Отправлено: 26 Февраля, 2014 - 21:49:29
Посетитель
Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011
Помог: 7 раз(а)
papagot пишет:
Так вот вопрос как сделать так что если найден элемент то пропускал бы а не писал пустое значение в файл.
PHP:
скопировать код в буфер обмена
foreach ( $unread_messages_get [ 'response' ] as $key => $message ) {
if ( ! $message [ 'uid' ] ) continue ;
//А дальше все то же самое... Я там особо не вникал.
papagot
Отправлено: 26 Февраля, 2014 - 22:09:25
Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Март 2011
Откуда: Riga, Latvia
Помог: 0 раз(а)
MAXUS пишет: papagot пишет:
Так вот вопрос как сделать так что если найден элемент то пропускал бы а не писал пустое значение в файл.
PHP:
скопировать код в буфер обмена
foreach ( $unread_messages_get [ 'response' ] as $key => $message ) {
if ( ! $message [ 'uid' ] ) continue ;
//А дальше все то же самое... Я там особо не вникал.
И ещё раз огромное спасибо.
Поиск в теме | Версия для печати
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB