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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
tuareg
Отправлено: 02 Июля, 2012 - 00:56:17
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




Что-то уже туплю.
Есть массив типа
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr=array(
  3.   'key1'=>array('index1'=>array('тут не важно что'),
  4.                       'index2'=>array('тут не важно что'),
  5.                       'index3'=>array('тут не важно что')),
  6.   'key2'=>array('index1'=>array('тут не важно что'),
  7.                       'index4'=>array('тут не важно что'),
  8.                       'index2'=>array('тут не важно что')),
  9.   'key3'=>array('index1'=>array('тут не важно что'),
  10.                       'index8'=>array('тут не важно что'),
  11.                       'index2'=>array('тут не важно что'))
  12. );
  13.  

Как можно получить пересекающиеся значения ключей. В данном случае на выходе надо получить index1 и index2. Количество элементов в массиве $arr не ограничено.
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2012 - 03:05:22
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. function array_custom_diff($arr)
  3. {
  4.         $arrCheck = array();
  5.         $arrRes = array();
  6.        
  7.         foreach($arr as $k => $arr2)
  8.         {
  9.                 foreach($arr2 as $k2 => $v2)
  10.                 {
  11.                         if(isset($arrCheck[$k2]))
  12.                         $arrRes[$k2] = $v2;
  13.                         else
  14.                         $arrCheck[$k2] = 1;
  15.                 }
  16.         }
  17.        
  18.         return $arrRes;
  19. }
  20.  
  21. echo '<pre>'.print_r(array_custom_diff($arr), true).'</pre>';
  22.  
  23.  
  24. /* Результат
  25.  
  26. Array
  27. (
  28.     [index1] => Array
  29.         (
  30.             [0] => тут не важно что
  31.         )
  32.  
  33.     [index2] => Array
  34.         (
  35.             [0] => тут не важно что
  36.         )
  37.  
  38. )
  39.  
  40. */
  41.  
  42.  

(Отредактировано автором: 02 Июля, 2012 - 18:45:22)

 
 Top
tuareg
Отправлено: 02 Июля, 2012 - 13:54:25
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




Спасибо
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2012 - 17:58:30
Post Id



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


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


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




Не за что.
 
 Top
tuareg
Отправлено: 04 Июля, 2012 - 03:16:43
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




Еще вопрос. Есть массив
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr=array(
  3.   'key1'=>array('key_1'=>2123),
  4.   'key2'=>array(
  5.              'key2_1'=>2123,
  6.              'key2_2'=>2123,
  7.    )
  8. );
  9. //Надо получить массив
  10. $newArr=array(
  11.  '0'=>"key_1 key2_1",//строка
  12.  '1'=>"key_1 key2_2"
  13. );
  14.  

(Отредактировано автором: 04 Июля, 2012 - 03:18:00)

 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июля, 2012 - 03:30:59
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




PHP:
скопировать код в буфер обмена
  1. $arr = array(...);
  2.  
  3. $first = array_shift($arr);
  4. $firstkey = array_keys($first);
  5. $firstval = array_values($first);
  6.  
  7. $newArr = array();
  8. foreach ($arr as $item) {
  9.   foreach ($item as $k => $sub) {
  10.     if ($sub == $firstval[0]) {
  11.       $newArr[] = $firstkey[0] . ' ' . $k;
  12.     }
  13.   }
  14. }
Намудрил...
 
 Top
tuareg
Отправлено: 04 Июля, 2012 - 03:37:29
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




А если массив будет
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr=array(
  3.   'key2'=>array(
  4.              'key2_1'=>2123,
  5.              'key2_2'=>2123,
  6.    ),
  7.    'key1'=>array('key_1'=>2123),
  8.    'key3'=>array(
  9.             'key3_1'=>2123,
  10.             'key3_3'=>2123,
  11.             'key3_2'=>2123
  12.    )
  13. );
  14.  

? Не понял
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июля, 2012 - 03:41:34
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




и?
 
 Top
tuareg
Отправлено: 04 Июля, 2012 - 03:44:23
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




DeepVarvar пишет:
и?

Результат
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => key2_1 key_1
  4.     [1] => key2_1 key3_1
  5.     [2] => key2_1 key3_3
  6.     [3] => key2_1 key3_2
  7. )
  8.  
 
 Top
armancho7777777 Супермодератор
Отправлено: 04 Июля, 2012 - 03:46:28
Post Id



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


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


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




tuareg, в чём суть задачи?
Вы, я думаю, не пытаетесь тупо решить примеры из задачника?)
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июля, 2012 - 03:48:24
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




И чем мой результат не тот который нужен?
 
 Top
tuareg
Отправлено: 04 Июля, 2012 - 03:56:38
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




Суть задачи
есть массив
PHP:
скопировать код в буфер обмена
  1.  
  2. [html_page|1] => Array
  3.         (  
  4.             [ассортимен] => Array
  5.                 (
  6.                     [0] => ассортимент
  7.                 )
  8.             [концерн] => Array
  9.                 (
  10.                     [0] => концерн
  11.                     [1]=> концерну
  12.                 )
  13.  
  14.             [ваининг] => Array
  15.                 (
  16.                     [0] => вайниг
  17.                     [1] => вайнигe
  18.                 )
  19.         )
  20.  

Структура такая, может меняться количество
Надо сформировать строки типа
PHP:
скопировать код в буфер обмена
  1.  
  2. array[0]=>"ассортимент концерн вайниг";
  3. array[1]=>"ассортимент концерн вайниге";
  4. array[2]=>"ассортимент концерну вайниг";
  5. array[3]=>"ассортимент концерну вайниге";
  6.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июля, 2012 - 04:01:21
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




А если в ассортименте больше одного то как должно быть в итоге?
Чота на брутфорс похоже Радость
 
 Top
tuareg
Отправлено: 04 Июля, 2012 - 04:03:54
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




DeepVarvar пишет:
А если в ассортименте больше одного то как должно быть в итоге?
Чота на брутфорс похоже Радость

почему нет. Это типа googla показаны результаты по тому-то ...
Возможно Вы искали то-то
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июля, 2012 - 04:05:05
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Кароч взять мой вариант, обернуть в еще один внешний цикл и юзать там $firstkey[$current] и $firstval[$current] вместо нулевого индекса как сейчас.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB