Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массивы PHP 
:(
    Опции темы
VovaPHP
Дата 15.11.2006, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 13.9.2006

Репутация: нет
Всего: нет



Подскажите простой примерчик пожалуйста!

Задача. Есть массив со столбцами: наименование и количество
надо проверить есть ли строка с определенным наименованием и если есть то взять количество из этой строки.

ПС: Умею искать только цикламиsmile
PM MAIL   Вверх
SelenIT
Дата 15.11.2006, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



VovaPHP, наименования уникальны? Если да, то почему бы не использовать ассоциативный массив?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
skalex
Дата 15.11.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



VovaPHP, покажи свой массив.

Добавлено @ 12:20 
Код
$data = array(
   'zaz',
   'vaz',
   'gaz'
);

$str = 'vaz';
echo (in_array($str, $data)) ? 'found' : 'not found';

$str = 'maz';
echo (in_array($str, $data)) ? 'found' : 'not found';

PM   Вверх
VovaPHP
Дата 16.11.2006, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 13.9.2006

Репутация: нет
Всего: нет



Массив Такой

ИД_товара    Количество
000001          1
000002          15
000006          125

ИД_товара    - уникальный, надо неайти есть ли в массиве ИД_товара и если есть то какое количество в этой строке
PM MAIL   Вверх
SelenIT
Дата 16.11.2006, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



VovaPHP, делайте ассоциативный массив вида
Код

$goods_amount = array('000001' => 1, '000002' => 15, '000006' => 125);

тогда ничего искать не придется - можно сразу выбирать по ключу:
Код

if (isset($goods_amount[$key])) echo $goods_amount[$key]; else echo 'Товар отсутствует';



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
VovaPHP
Дата 16.11.2006, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 13.9.2006

Репутация: нет
Всего: нет



SelenIT - спасибо, помогло. 
PM MAIL   Вверх
Nestrat
Дата 25.1.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.10.2006

Репутация: нет
Всего: нет



Очень хочется узнать как сортируются трехмерные массивы

Код
$array[$n][$date][$time]=$value;


нужно отсортировать 

сначала по ключу

Код
$date


потом по ключу

Код
$time


Результат должен выгладить так

26.01.2007
  16:00 – Значение
  15:00 – Значение
  13:00 – Значение

25.01.2007
  16:00 – Значение
  15:00 – Значение
  13:00 – Значение

…

PM MAIL   Вверх
Mal Hack
Дата 25.1.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Nestrat, я бы, задумался над правильностью получения данных. А так-ручками, array_multisort
PM ICQ   Вверх
Nestrat
Дата 25.1.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.10.2006

Репутация: нет
Всего: нет



Спасибо за ответ. Он придал уверенности в правильности моих действий.  smile 
Просто хотелось узнать, может есть альтернативные сортировки?  smile 

И вообще я не верю, что все сортируют массивы по шаблону, ведь должна же быть философия сортировки, как у индейцев. smile   

PM MAIL   Вверх
GZep
Дата 25.1.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Цитата(Nestrat @  25.1.2007,  20:25 Найти цитируемый пост)
Очень хочется узнать как сортируются трехмерные массивы

Это вы для примера написали?
Цитата(Nestrat @  25.1.2007,  20:25 Найти цитируемый пост)
$array[$n][$date][$time]=$value;

Вообще-то тут четырехмерный массив. (это так, для справки).

Для отладки скриптов советую использовать следующую конструкцию:
Код

echo "<pre>".print_r( $ARRAY , true)."</pre>";

Где $ARRAY - имя вашего массива. эта конструкция выведет содержимое массива любой "глубины", причем очень читабельно для глаз. smile 

Это сообщение отредактировал(а) GZep - 25.1.2007, 21:14


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
Nestrat
Дата 25.1.2007, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.10.2006

Репутация: нет
Всего: нет



Код

$array[0][25][15:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[1][25][14:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[2][26][15:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[3][26][16:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[4][24][15:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[5][26][14:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[6][24][16:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[7][25][16:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[8][24][14:00]=”Тут лабуда всякая которую надо упорядочить”;



Как сделать так?


Код

$array[0][26][16:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[1][26][15:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[2][26][14:00]=”Тут лабуда всякая которую надо упорядочить”;
//---
$array[3][25][16:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[4][25][15:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[5][25][14:00]=”Тут лабуда всякая которую надо упорядочить”;
//---
$array[6][24][16:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[7][24][15:00]=”Тут лабуда всякая которую надо упорядочить”;
$array[8][24][14:00]=”Тут лабуда всякая которую надо упорядочить”;


Если  тупо смотреть на массив, он не отсортирутся. Я пробовал.

Даже через


Код

Print_r();

PM MAIL   Вверх
Mal Hack
Дата 25.1.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Nestrat, руками пишите сортировку.
PM ICQ   Вверх
GZep
Дата 25.1.2007, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Nestrat, какие критерии сортировки? По времени?


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
Gold Dragon
Дата 26.1.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



А вот такой вопрос.. А зачем вообще сортировать массив?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Всемогущий
Дата 26.1.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



Кажется это лента новостей.
Если это так могу дать хорошую на php-mysql,
обьясню всёёёёёё.


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Shaggie
Дата 26.1.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(Gold Dragon @  26.1.2007,  09:02 Найти цитируемый пост)
А вот такой вопрос.. А зачем вообще сортировать массив? 

Чтобы обработать/вывести информацию в нужном порядке. Странный вопрос, имхо...


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Gold Dragon
Дата 26.1.2007, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(SelenIT @  15.11.2006,  01:20 Найти цитируемый пост)
VovaPHP, наименования уникальны? Если да, то почему бы не использовать ассоциативный массив?
я исхожу из этой цитаты. А судя по тому что хочет VovaPHP это самый лучший вариант. По этому и спрашиваю зачем его сортировать, когда я могу вытащить любую запись



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Nestrat
Дата 26.1.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.10.2006

Репутация: нет
Всего: нет



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

Код

// Сортировка трехмерного масива
while (list($key, $val) = each($polnyi_print)) 
{
while (list($date, $remainder) = each($val)) 
{
for($pi=1; $pi<=31; $pi++){
if($date==$pi)
{

krsort($remainder);
reset($remainder);
while (list($time, $text) = each($remainder)) 
{
@$text_all[$pi].=$text;
}
}

}
}
}
//---
$plumbum=31;
while($plumbum!==0)
{
if(!empty($text_all[$plumbum])){print ("<div style=\"border:1px solid #444444;margin-left:4px;margin-bottom:4px;width:600px;padding:4px;background:#666666;color:#FFFFFF;font-size:13px;\"><b>НОВОСТИ ЗА ".$plumbum.".".$global_date."</b></div>".$text_all[$plumbum]);}


$plumbum=$plumbum-1;
}
///--

PM MAIL   Вверх
GZep
Дата 27.1.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Nestrat, советую Вам пользоваться вместо while (list($KEY, $VALUE) = each($ARRAY)), циклом foreach: foreach ($ARRAY as $KEY => $VALUE), по-скольку этот цикл специально для этого придуман и его использование (ИМХО) гораздо более удобнее, тем более что при этом цикле отпадает надобность в функции reset. smile 

Вот переписал ваш код:
Код

<?php

// Сортировка трехмерного масива
foreach ($polnyi_print as $key => $val)
{
foreach ($val as $date => $remainder)
{
for($pi=1; $pi<32; $pi++){
if($date==$pi)
{
krsort($remainder);
foreach ($remainder as $time => $text)
{
@$text_all[$pi].=$text;
}
}
}
}
}
//---
for ($plumbum = 31; $plumbum; $plumbum--)
{
if(!empty($text_all[$plumbum])){print ("<div style=\"border:1px solid #444444;margin-left:4px;margin-bottom:4px;width:600px;padding:4px;background:#666666;color:#FFFFFF;font-size:13px;\"><b>НОВОСТИ ЗА ".$plumbum.".".$global_date."</b></div>".$text_all[$plumbum]);}
}
///--

?>


Обратите внимание:
  • $plumbum=$plumbum-1; - это тоже самое, что и $plumbum--; (зачем вы так пишите? Это же не удобно и у меня складывается ошушение, что Вы начинали с Паскаля... smile )
  • while($plumbum!==0) вот это я совсем не понял... Зачем тут вообще сравнение эквивалентности? Вместо этого достаточно просто while($plumbum) (это так можно конкретно в Вашем случае...


Это сообщение отредактировал(а) GZep - 27.1.2007, 17:03


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
Nestrat
Дата 8.2.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.10.2006

Репутация: нет
Всего: нет



Очень сильно прошу прощения за отсутсвие. Простите меня  smile 
Та массив, вобщем вот что я сделал
Код

// Сортировка трехмерного масива $polnyi_print[1][2][3] ну или четырех мне это не важно главное
// чтобы работало )))
while (list($key, $val) = each($polnyi_print)) 
{
while (list($date, $remainder) = each($val)) 
{
for($pi=1; $pi<=31; $pi++){
if($date==$pi)
{

krsort($remainder);
reset($remainder);
while (list($time, $text) = each($remainder)) 
{
@$text_all[$pi].=$text;
}
}

}
}
}


Прошу учесть что времени на особо долгое размышление небыло
Но если кто его отредактирует то следующий кто столкнется будет вам очень благодарен
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0698 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.