LINUX.ORG.RU

[php] Поменять два элемента в массиве местами

 


0

0

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

function swap_items(&$submenu, $index1, $index2)
{
	$tmp = $submenu[$index1];
	$submenu[$index1] = $submenu[$index2];
	$sumbenu[$index2] = $tmp;
}

В качестве элементов $submenu выступают массивы, которые могут в себе содержать еще вложенные массивы.

Проблема: в $sumbenu[$index2] остается старое содержимое, в то время как $tmp содержит $submenu[$index1].

P.S.: в PHP я не ас :)



Последнее исправление: viktor-zin (всего исправлений: 1)

Дополнительная информация

Сделал по-другому:

function swap_items(&$submenu, $index1, $index2)
{
	$src = $submenu;
	$submenu[$index1] = $src[$index2];
	$sumbenu[$index2] = $src[$index1];
}

Результат тот же :(

viktor-zin
() автор топика
Ответ на: Дополнительная информация от viktor-zin

Решил сам

Действительно глаза замылились: в одном месте я пишу $submenu, а в другом $sumbenu.

Домой надо идти и выспаться :)

P.S.: Сам с собой поговорил... задумался...

viktor-zin
() автор топика
Ответ на: комментарий от anonymous

>А вот писал бы пхп про ошибки как надо...
Синтаксической ошибки там нет. Или тебе подсказки как в поиске гуглф нужны - «возможно вы имели в виду „submenu“?

От таких ошибок кроме нормального автодополнения ничего не спасет.

Turbid ★★★★★
()
Ответ на: комментарий от anonymous

>А вот писал бы пхп про ошибки как надо...

Так пишет же. Не нужно E_NOTICE отключать. Это должно быть правилом хорошего тона - обязательно включать предупреждения по-максимуму.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Гы. Пардон. проверил - оказывается, PHP выдаёт NOTICE только при чтении неинициализированной переменной. При записи - предупреждения нет.

Правда, в том же Python так же. А вот Perl с use strict такого не позволял :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Не нужно E_NOTICE отключать.


По хорошему, E_STRICT тоже надо юзать...

А лучше всего пользоваться нормальной IDE (NetBeans например), которая намекнёт на использование неинициализированной переменной.

Viglim
()
Ответ на: комментарий от Viglim

>По хорошему, E_STRICT тоже надо юзать..

Но тут оно не поможет. Хотя за наводку спасибо, я его как-то упустил в PHP5, заюзаю.

А лучше всего пользоваться нормальной IDE (NetBeans например)


Если бы NetBeans ещё не тормозил ужасно и его можно бы было использовать на удалённой машине. А то обычно «IDE» - это mcedit в ssh :) (а запустить NetBeans локально с sshfs - это хуже термоядерной войны :D)

KRoN73 ★★★★★
()
Ответ на: комментарий от Viglim

>1. Венда детектед
Все претензии направляйте моему работодателю. А ZDE и под линуксы есть.

iSage ★★★★
()
Ответ на: комментарий от trashymichael

>неужто нетбинс тормознее эклипса?

Чуть шустрее. Но Эклипс - это совсем уже неприлично :D

...

Упомянутый Zend Studio, кстати, мало того, что на том же Eclipse сделан, так ещё и проприетарный и денег стоит :)

У НетБинса ещё один недостаток. Если уж мне нужна полноценная IDE, то именно полноценная. А с PHP у Нетбинса пока тяжеловато. PHPDoc'а нету, настройки автоформатирования очень убогие и т.п.

KRoN73 ★★★★★
()
Ответ на: комментарий от trashymichael

>и да, лучше уж vim...

А его я так и не освоил. Не для моего мозга этот продукт :D Т.е. пользоваться им умею, но ненавижу.

KRoN73 ★★★★★
()
Ответ на: комментарий от true_admin

Было там предупреждение, но оно тут же скрывалось из-за header(«Location: bla-bla.php»). Поэтому я не видел его. Как только закоментил этот редирект, то сразу же и увидел.

viktor-zin
() автор топика
Ответ на: комментарий от KRoN73

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

Упомянутый Zend Studio, кстати, мало того, что на том же Eclipse сделан, так ещё и проприетарный и денег стоит :)


на что и намекаю
вообще я наверное неверно понял суть постов, ладно

trashymichael ★★★
()
Ответ на: комментарий от viktor-zin

Было там предупреждение, но оно тут же скрывалось из-за header(«Location: bla-bla.php»).

Поэтому в модуле редиректа должна быть проверка, типа:

// ...
    if(config('debug_redirect_trace'))
        return debug_exit("Go to <a href=\"{$uri}\">{$uri}</a>");
// ...
    header("Location: $url");
// ...

И на отладочном сервере прописываем соответствующий флаг. Или на боевом в зависимости от куки, скажем, чтобы только тебе выдавалось. И сразу видно, как прошёл процесс обработки, и куда пойдёт редирект, и откуда он был вызван (в моём примере debug_exit() ещё и трейс вызовы выдаёт).

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

>PHPDoc'а нету, настройки автоформатирования очень убогие и т.п.

PHPDoc - в смысле распарсить и использовать в подсказках? Есть.

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

roller ★★★
()
Ответ на: комментарий от roller

>PHPDoc - в смысле распарсить и использовать в подсказках? Есть.

Странно, а где оно там включается, не видел.

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


У меня 6.9_beta-r1

KRoN73 ★★★★★
()
Ответ на: комментарий от trashymichael

>когда уже люди без собак научатся КОДИТЬ...

Есть ряд случаев, когда они оправданы. Есть древний код десятилетней давности, до которого руки не доходят. Работает - зачем трогать? :)

А идеологически - да, конечно, собаки - это плохо :D

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.