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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: массив

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]  [51-52] 

 
 автор: sim5   (21.06.2010 в 22:29)   письмо автору
 
   для: Valick   (21.06.2010 в 22:25)
 

Валик, вас несет... ;-)

РНР, это язык изобилующий лишними функциями, поэтому в нем можно писать код:
сверху-вниз
снизу-вверх
слева-направо
.....
Это сказал я. Что там сказал Котеров, мне по-барабану.
А вот думать об экономии, так надо сперва подумать, стоить ли думать в конкретном случае. Не беспокойтесь, не только вы этим озабочены.

  Ответить  
 
 автор: Valick   (21.06.2010 в 22:25)   письмо автору
 
   для: sim5   (21.06.2010 в 21:55)
 

А как я должен понимать слова, что ваш код лучше, так как не зависит от длины массива?
именно так как я написал, в Вашем случае расход памяти увеличивается прямо пропорционально величине массива...
Другой вопрос, если речь идет о большом объеме данных
нет это не другой вопрос, а именно об этом и идет речь.
но неуж-то вы не знаете, что можно получить некоторые элементы массива?
знаю, и написал код в самом начале дискуссии (код номер 2)
Знаете конечно, ну а какими путями это можно сделать, так и в мануал можно заглянуть
именно это я и написал, цитирую:
1код голова-мануал, 2 код голова+мануал
Я вижу у автора массив с четырмя элементами. А стоит ли думать в данном случае об экономии?
однозначно да (курочка по зёрнышку) - РНР это язык в котором требуется самодисциплина (это не я сказал, если не ошибаюсь об этом упоминал Д.Котеров)
а выражайтесь более ясно, если ваши речи выражают не то, о чем могут подумать
я вижу что Вы меня не понимаете, но почему это происходит я понять не могу.
А заглядывать в мануал, это что постыдно?
нет не постыдно, но почему Вы упорно считаете, что я туда не заглядываю, для меня остается загадкой.
Валик, ну вы молодец
спасибо :)

  Ответить  
 
 автор: sim5   (21.06.2010 в 21:55)   письмо автору
 
   для: Valick   (21.06.2010 в 21:33)
 

Валик, ну вы молодец. А как я должен понимать слова, что ваш код лучше, так как не зависит от длины массива? Ведь следует полагать, что то, что я написал, зависит от длины его, то есть не будет работать с любой длиной массива. Вы уж тогда не изъясняйтесь эзоповым языком, а выражайтесь более ясно, если ваши речи выражают не то, о чем могут подумать.

А заглядывать в мануал, это что постыдно? Я лично так не считаю. Запоминается хорошо то, что часто используется, да и то иногда можно и кое что перепутать тоже. Разве обязательно изучать все, что он содержит, наизусть?

Я вижу у автора массив с четырмя элементами. А стоит ли думать в данном случае об экономии? Вы думаете выигрыш будет? Проверьте, вот эта запись:
$a= array('a'=>9, 'b'=>15, 'c'=>21, 'd'=>3);  
$m = array_values($a);

будет расходовать меньше памяти, чем эта:
$a= array('a'=>9, 'b'=>15, 'c'=>21, 'd'=>3);   
$m = array(current($a), array_values(array_slice($a,-1)));

К тому же, во втором случае требуется больше работы. Стоит ли овчинка выделки? Другой вопрос, если речь идет о большом объеме данных, но неуж-то вы не знаете, что можно получить некоторые элементы массива? Знаете конечно, ну а какими путями это можно сделать, так и в мануал можно заглянуть, чтобы выбрать лучшее. Вот я вам и посоветовал.

  Ответить  
 
 автор: Valick   (21.06.2010 в 21:33)   письмо автору
 
   для: sim5   (21.06.2010 в 20:35)
 

Сим, я прекрасно понимаю, что вырывать фразу из контекста и трактовать её так как вам угодно это Ваше любимое занятие, но даже при таком раскладе, я настаиваю, укажите где именно я написал строчку Ваш код не будет работать с большим массивом (этот пост не считается)
Для этого стоило просто заглянуть в мануал, и продолжения этой бессмысленной дискусси не было бы.
Прошу впредь не посылать меня в мануал (я Вас туда никогда не посылал) не указывая четкую ссылку. Идеальным было бы предложение с краткой выпиской из мануала и ссылку на него же. Без этого это громкий ба-бах в чистое небо холостыми патронами.

  Ответить  
 
 автор: sim5   (21.06.2010 в 20:35)   письмо автору
 
   для: Valick   (21.06.2010 в 20:30)
 

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

А вот это я придумал, да?:

>автор: Valick (21.06.2010 в 19:23)
>не могу не сказать, уж простите, но решение предложенное мной лучше
>так как не зависит от размера массива...

>4. Вас беспокоит расход памяти?
>смею утверждать что это должно волновать каждого на этом форуме.

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

  Ответить  
 
 автор: Valick   (21.06.2010 в 20:30)   письмо автору
 
   для: sim5   (21.06.2010 в 20:16)
 

3. То что код не будет работать с любой длиной массива, это полнейший бред.
ткните пальцем где Вы это прочитали, а то может я сошел с ума и у меня раз(n)ение личности.
Но память в любом случае не ризиновая и в Вашем случае шансов выйти за ее пределы ограничения объема ровно в 2 раза больше в отличии от моего (касательно предыдущего скрипта).
4. Вас беспокоит расход памяти?
смею утверждать что это должно волновать каждого на этом форуме.
__
рабочий день закончен, поеду домой анализировать Ваш последний скрипт.
(продолжение следует)

  Ответить  
 
 автор: sim5   (21.06.2010 в 20:16)   письмо автору
 
   для: Valick   (21.06.2010 в 19:48)
 

Значит так:
1. Код от 21.06.2010 в 14:30 не меняет значения, он меняет местами элементы массива, парой - ключ->значение! Это согласно логике вопроса автора.
2. Код от 21.06.2010 в 17:37 меняет значения крайних элементов массива!
3. То что код не будет работать с любой длиной массива, это полнейший бред.
4. Вас беспокоит расход памяти? Так извените, у вас к заврашнему еще какие либо притензии появяться, а чтобы их не было, пожайлуйста:
<?
$a
= array('a'=>9'b'=>15'c'=>21'd'=>3'e'=>23'f'=>45'g'=>234);  
$m = array(current($a), array_values(array_slice($a,-1)));
$a[key($a)] = $m[1][0]; 
end($a); 
$a[key($a)]=$m[0]; 
print_r($a);
?>

Ну что попусту молотить то? Загляните в мануал - ваш код не панацея, и не из лучших.

  Ответить  
 
 автор: Valick   (21.06.2010 в 19:48)   письмо автору
 
   для: sim5   (21.06.2010 в 19:33)
 

и ваш код не панацея, да и не лучший
тогда не будте голословным укажите на недостатки
Как же вы достали, охота уже заматериться...
можете материться, у меня к этому иммунитет...
Я не менял значения!
меняли, и это очень легко доказать
при обращении к массиву по ключу:
в исходном массиве:
echo $a[0]; будет равно 9
echo $a[3]; будет равно 3
после преобразования:
echo $a[0]; будет равно 3
echo $a[3]; будет равно 9
Вы по-прежнему утверждаете что не меняли значения?
Полнейшая чушь - этот код не зависит от размера массива. Ну вы бы хоть мозгами бы порасскинули, ну с чего это такое утверждение?
с того что вы создаете индексную копию ассоциативного массива по средствам array_values
Ну блин, слов просто нет
ищите ибо я серьезно настроен разделать Вас под орех или висеть на Вашем щиту, третьего не дано :)

  Ответить  
 
 автор: sim5   (21.06.2010 в 19:33)   письмо автору
 
   для: Valick   (21.06.2010 в 19:23)
 

Как же вы достали, охота уже заматериться...
Я не менял значения! Я переставил элементы массива - ключ->значение!
А уж менял значения по вашей просьбе.
Ну блин, слов просто нет.

>не могу не сказать, уж простите, но решение предложенное мной лучше так как не зависит от размера массива...

Полнейшая чушь - этот код не зависит от размера массива. Ну вы бы хоть мозгами бы порасскинули, ну с чего это такое утверждение?
А вот экономия, так это уже иной вопрос, и рассматриваться должен в рамках конкретных условий. Собственно решений может быть не одно, если подумать, и ваш код не панацея, да и не лучший.

  Ответить  
 
 автор: Valick   (21.06.2010 в 19:23)   письмо автору
 
   для: sim5   (21.06.2010 в 19:12)
 

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

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]  [51-52] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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