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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> преобразование массивов, с сохранением ссылок 
:(
    Опции темы
youri
Дата 1.8.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



мне нужно, чтобы сохранялись ссылки при преобразовании ассоциативный массив <=> массив с числовыми индексами, т.е. в результате подобного кода
Код

$a = 1;
$b = array('asd', &$a);
for( $i=0; $i<count($b); $i+=2 )
    $c[ $b[$i] ] = $b[$i+1];
$a = 2;
print_r($c);

должны видеть 2 (и ключ естественно)
вот это тоже не работает как мне нужно (по понятным причинам)
Код

$a = 1;
$b = array('asd'=>&$a);
foreach( $b as $k=>$v ) {
    $c[] = $k;
    $c[] = $v;
}
$a = 2;
print_r($c);

но у меня в коде (а не в этих тестовых примерах) по идее происходит такое преобразование с почему-то сохранением ссылок (я еще не до конца разобрался)
если у кого будут идеи, они будут всячески приветствоваться  smile 
PM   Вверх
sTa1kEr
Дата 2.8.2008, 11:23 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

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



http://ru.php.net/foreach
Цитата

As of PHP 5, you can easily modify array's elements by preceding $value with &. This will assign reference instead of copying the value. 

Код

$a = 1;
$b = array('asd' => &$a);
foreach( $b as $k => &$v ) {
    $c[] = $k;
    $c[] = &$v;
}
$a = 2;
print_r($c);

PM MAIL   Вверх
youri
Дата 4.8.2008, 09:39 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



тоже вариант, но я решил в начало ключа, по которому содержится ссылка, добавлять &
Код

$a = 1;
$b = array('&asd' => &$a);
foreach( $b as $k => &$v ) {
    $c[] = $k;
    if( $k{0} == '&' )
        $c[] = &$v;
    else
        $c[] = $v;
}
$a = 2;
print_r($c);

т.е. я в общем-то не говорил, что такое приемлемо smile

Добавлено через 1 минуту и 18 секунд
т.е. разница в принципе небольшая - меньше шансов случайно что-то не то поменять
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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