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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Строка-массив
 
 автор: DEM   (17.11.2009 в 05:15)   письмо автору
 
 

Есть строка вида "qwe.zxc.asd"
Как обратится к массива $array['qwe']['zxc']['asd']?

  Ответить  
 
 автор: Николай2357   (17.11.2009 в 05:28)   письмо автору
 
   для: DEM   (17.11.2009 в 05:15)
 

По разному можно... "Эй, массив!" допустим. Или "Уважаемый массив!".
Главное чтоб он был... А если есть, то так:
<?
$keys 
explode('.''qwe.zxc.asd');
$val $array[$keys[0]][$keys[1]][$keys[2]];

  Ответить  
 
 автор: DEM   (17.11.2009 в 05:33)   письмо автору
 
   для: Николай2357   (17.11.2009 в 05:28)
 

Проблема в том, что вы не знаем сколько здесь точек. строка может быть "qwe.zxc", а может быть и "qwe.rty.gfh.sdxvcv.jkhjk.sdfsf.kt"

  Ответить  
 
 автор: sim5   (17.11.2009 в 05:46)   письмо автору
 
   для: DEM   (17.11.2009 в 05:33)
 

Ну значит получите массив из 7 элементов.

  Ответить  
 
 автор: Николай2357   (17.11.2009 в 06:43)   письмо автору
 
   для: DEM   (17.11.2009 в 05:33)
 

Так массив есть или его надо сформировать? Обратиться можно только к существующему массиву. А там без разницы сколько точек.

  Ответить  
 
 автор: DEM   (17.11.2009 в 06:47)   письмо автору
 
   для: Николай2357   (17.11.2009 в 06:43)
 

есть массив
$arr = array("qwe"=>array("asd"=>array("zxc")));
Мы не знаем сколько там элементов и т.д.
и у нас есть строка "qwe.asd.zxc"
И надо как-то обратится к этому элементу. Делал так:

      $exp_dot = explode(".", $string);
      $q = $arr[$exp_dot[0]];
      for($i=0;$i<count($exp_dot);$i++)
      {
        //а что тут писать???
      }

  Ответить  
 
 автор: sim5   (17.11.2009 в 07:00)   письмо автору
 
   для: DEM   (17.11.2009 в 06:47)
 

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

  Ответить  
 
 автор: DEM   (17.11.2009 в 07:47)   письмо автору
 
   для: DEM   (17.11.2009 в 05:15)
 

Сделал! Нашёл свою ошибку... фууух... Как бы я знал, как это делается, но не поулчалось. Оказалось, что я делал explode с массивом... всем спасибо ;)

  Ответить  
 
 автор: DEM   (20.11.2009 в 08:27)   письмо автору
 
   для: DEM   (17.11.2009 в 05:15)
 

А теперь похожая проблема...
Как достать значение из массива элементы которого хранятся в другом массиве (тут использую explode и просто циклом FOR обхожу). Но теперь у меня другая проблема: я имею такую же строку, разделаю её explode, а как мне заполнить элемент массива $array['qwe']['zxc']['asd'] (если строка была "qwe.zxc.asd") чем-либо? Опять же длину и прочее не значем, имеем только строку и значение которым надо заполнить. Думаю, что надо через указатели делать, но с ними ни разу не работал, надеюсь тут помогут :)

  Ответить  
Rambler's Top100
вверх

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