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]   

> Описание: поиск в двумерных массивах
divine108
Отправлено: 30 Января, 2012 - 14:56:14
Post Id


Новичок


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


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




Всем привет!
Гуру помогите с вопросом:
У меня есть 2 двумерных массива
$citymas[name][region_id]
$regionmas[name][region_id]

Мне надо в цикле в третий массив одномерный, по числу region_id из массива $citymas для каждого его элемента подставить соответствующее значение name по region_id из массива $regionmas. Но функция array_search дает ноль постоянно

вот так записываю:

PHP:
скопировать код в буфер обмена
  1.   $count = 0;
  2.                 while($count < 2505)
  3.                 {
  4.                         $fullstr[$count] = "Город: ".$citymas[$count][0];
  5.                         $test = $citymas[$count][1];
  6.                        
  7.                         $ress = array_search($test, $regionmas);
  8.                         $fullstr[$count] .= $regionmas[$ress][1];
  9.  
  10.                         $count++;
  11.  
  12.                 }

Что то никак додуматься не могу((
Конечная цель, в массиве $fullstr строки с городом и регионом..
Подсобите ламеру)

(Отредактировано автором: 30 Января, 2012 - 14:57:59)

 
 Top
ugin_root
Отправлено: 31 Января, 2012 - 06:09:19
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


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




divine108
напиши примеры того как выглядят $citymas и $regionmas.
 
 Top
divine108
Отправлено: 31 Января, 2012 - 09:02:29
Post Id


Новичок


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


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




ugin_root пишет:
divine108
напиши примеры того как выглядят $citymas и $regionmas.


Заполняю так;
В вложении прикрепил скрин из pma структуры этих табл. на всякий..

PHP:
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT * FROM city WHERE country_id=3159 ORDER BY name");
  3. $result2 = mysql_query("SELECT * FROM region WHERE country_id=3159 ORDER BY name");
  4.                 $findex = 0;
  5.                
  6.                 while ($row = mysql_fetch_assoc($result)) { // заполняем массив городами и индексами регионов
  7.                
  8.                 $sindex = 0;
  9.  
  10.                 $citymas[$findex ][$sindex] = $row["name"];
  11.                 $sindex++;
  12.                 $citymas[$findex ][$sindex] = $row["region_id"];
  13.                 $findex++;
  14.                
  15.                 }
  16.                
  17.                 $findex = 0;
  18.                
  19.                 while ($row = mysql_fetch_assoc($result2)) {  // заполняем массив именами регионов и их индексами и индексами регионов
  20.                
  21.                 $sindex = 0;
  22.  
  23.                 $regionmas[$findex ][$sindex] = $row["name"];
  24.                 $sindex++;
  25.                 $regionmas[$findex ][$sindex] = $row["region_id"];
  26.                 $findex++;
  27.                 }
  28.                
  29.                 $findex = 0;
  30.  

Прикреплено изображение (Нажмите для увеличения)
1.jpg
 
 Top
sKaa
Отправлено: 31 Января, 2012 - 09:20:08
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array();
  3. $q = mysql_query("SELECT * FROM region WHERE country_id=3159 ORDER BY name");
  4.  
  5. while($result2 = mysql_fetch_assoc($q)){
  6.         $region_id = $row["region_id"];
  7.         $query =  mysql_query("SELECT * FROM city WHERE country_id=3159 AND region_id='$region_id' ORDER BY name");
  8.         if(mysql_num_rows($query)){
  9.                 for($k=0;$k<$rows;$k++){
  10.                         $row = mysql_fetch_assoc($query);
  11.                         $array[$row["name"]] = $region_id;
  12.                 }
  13.         }
  14. }
  15. print_r($array);
  16.  

Как-то так, хз, на коленке накатал. Должно работать.

(Отредактировано автором: 31 Января, 2012 - 09:20:59)

 
 Top
divine108
Отправлено: 31 Января, 2012 - 09:47:42
Post Id


Новичок


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


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




Спасибо тебе sKaa!!
Буду сейчас пробовать!!
 
 Top
ugin_root
Отправлено: 31 Января, 2012 - 10:31:33
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


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




Мне кажется или вы хотите связать две таблицы?
если да то делать это лучше не в php а сразу в mysql.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT CONCAT('Город:',sity.name,' Регион: ',region.name) AS `fullstr`
  2. FROM region
  3.     JOIN city ON city.region_id=region.region_id
  4. WHERE region.country_id=3159
  5. ORDER BY region.name,city.name


Но если нужен исключительно php то:
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($citymas as $k=>$v){
  3.     $fullstr[$k] = "Город: ".$citymas[$k][0] . 'Регион: ';
  4.     foreach($regionmas  as $k2=>$v2){
  5.         if($v[1]==$v2[1]){
  6.              $fullstr[$k] .= $v2[0];
  7.         }
  8.     }
  9. }
  10.  

(Отредактировано автором: 31 Января, 2012 - 10:32:00)

 
 Top
divine108
Отправлено: 31 Января, 2012 - 11:18:48
Post Id


Новичок


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


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




ugin_root Спасибо!
Я в мускле не силен, могу только через пхп обращаться в базу.
Каким образом используя интерфейс пма можно связать таблицы используя приведенный тобой код?
 
 Top
ugin_root
Отправлено: 01 Февраля, 2012 - 08:31:34
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


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




присто используй тот запрос который я написал, там таблицы связаны по средствам оператора JOIN если хочешь почитать про него подробнее то иди по ссылке
http://webextends[dot]net/articles/9[dot][dot][dot]-mysql-join[dot]html

запросы из пхп идут к мускулу, главное уметь их писать, а место откуда ты их будишь отправлять не имеет значения, пусть это пхп, руби, питон или консоль сам язык мускула от этого не меняется.
PHP:
скопировать код в буфер обмена
  1.    SELECT CONCAT('Город:',sity.name,' Регион: ',region.name) AS `fullstr`
  2.    FROM region
  3.        JOIN city ON city.region_id=region.region_id
  4.    WHERE region.country_id=3159
  5.    ORDER BY region.name,city.name
  6. ");

(Отредактировано автором: 01 Февраля, 2012 - 08:38:37)

 
 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