Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Задать значение массива в массиве

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Nicodinus
Отправлено: 14 Марта, 2012 - 16:05:22
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Янв. 2012  
Откуда: Москва


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. class temp
  2. {
  3.         private $vars = array();
  4.        
  5.         public function GetValueFromArray()//Пример: вызов GetValueFromArray('key1','key2','key3','value') вернёт $array['key1']['key2']['key3']
  6.         {//ps. Может быть есть более удобная функция?
  7.                 $args = func_get_args();
  8.                 $temp = null;
  9.                 for($i = 0; $i < sizeof($args)-1; $i++)
  10.                 {
  11.                         if(!$temp && isset($this->vars[$args[$i]])) $temp = $this->vars[$args[$i]];
  12.                         else if(isset($temp[$args[$i]])) $temp = $temp[$args[$i]];
  13.                         else break;
  14.                 }
  15.                 return $temp[$args[sizeof($args)-1]];
  16.         }
  17.        
  18.         public function SetValueInArray()
  19.         {
  20.                 $args = func_get_args();
  21.                 //Как сделать так, чтоб можно было задать значение в массиве по ключам, заданным в $args ?
  22.                 //Т.е. $array[$args[0]][$args[1]][$args[2]] = $args[3];
  23.                 //$args[3] - само значение, $args[0] - $args[2] - ключи
  24.         }
  25.        
  26.         public function __construct()
  27.         {
  28.                 $this->vars['key1']['key2']['key3'] = 'value';
  29.                 print_r($this->GetValueFromArray('key1','key2','key3'));
  30.         }
  31. }
  32.  
  33. $test = new temp;


Собственно вопрос, как задать значение массива по ключам, заданным в $args ? (функция SetValueInArray)

ps. Можно ли как то упростить функцию GetValueFromArray ?
 
 Top
OrmaJever Модератор
Отправлено: 14 Марта, 2012 - 16:08:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




а это что?
PHP:
скопировать код в буфер обмена
  1. $array[$args[0]][$args[1]][$args[2]] = $args[3];


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Nicodinus
Отправлено: 14 Марта, 2012 - 16:13:37
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Янв. 2012  
Откуда: Москва


Помог: 0 раз(а)




OrmaJever, это я написал, чтоб было хоть понятно что я хочу) Как бы функция независима, т.е. можно вызвать SetValueInArray('key1',.....,'key100500','value'), и она запишет в $array['key1']......['key100500'] значение 'value'

Вот как это сделать, я хз)

(Отредактировано автором: 14 Марта, 2012 - 16:14:07)

 
 Top
OrmaJever Модератор
Отправлено: 14 Марта, 2012 - 16:32:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




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


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Nicodinus
Отправлено: 14 Марта, 2012 - 16:45:00
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Янв. 2012  
Откуда: Москва


Помог: 0 раз(а)




OrmaJever, я понимаю, но мне нужно решить данную проблему Огорчение
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB