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
Форумы портала PHP.SU :: Версия для печати :: Не могу сообразить
Форумы портала PHP.SU » » Вопросы новичков » Не могу сообразить

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

1. tuareg - 02 Июля, 2012 - 00:56:17 - перейти к сообщению
Что-то уже туплю.
Есть массив типа
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 не ограничено.
2. armancho7777777 - 02 Июля, 2012 - 03:05:22 - перейти к сообщению
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.  
3. tuareg - 02 Июля, 2012 - 13:54:25 - перейти к сообщению
Спасибо
4. armancho7777777 - 02 Июля, 2012 - 17:58:30 - перейти к сообщению
Не за что.
5. tuareg - 04 Июля, 2012 - 03:16:43 - перейти к сообщению
Еще вопрос. Есть массив
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.  
6. DeepVarvar - 04 Июля, 2012 - 03:30:59 - перейти к сообщению
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. }
Намудрил...
7. tuareg - 04 Июля, 2012 - 03:37:29 - перейти к сообщению
А если массив будет
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.  

? Не понял
8. DeepVarvar - 04 Июля, 2012 - 03:41:34 - перейти к сообщению
и?
9. tuareg - 04 Июля, 2012 - 03:44:23 - перейти к сообщению
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.  
10. armancho7777777 - 04 Июля, 2012 - 03:46:28 - перейти к сообщению
tuareg, в чём суть задачи?
Вы, я думаю, не пытаетесь тупо решить примеры из задачника?)
11. DeepVarvar - 04 Июля, 2012 - 03:48:24 - перейти к сообщению
И чем мой результат не тот который нужен?
12. tuareg - 04 Июля, 2012 - 03:56:38 - перейти к сообщению
Суть задачи
есть массив
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.  
13. DeepVarvar - 04 Июля, 2012 - 04:01:21 - перейти к сообщению
А если в ассортименте больше одного то как должно быть в итоге?
Чота на брутфорс похоже Радость
14. tuareg - 04 Июля, 2012 - 04:03:54 - перейти к сообщению
DeepVarvar пишет:
А если в ассортименте больше одного то как должно быть в итоге?
Чота на брутфорс похоже Радость

почему нет. Это типа googla показаны результаты по тому-то ...
Возможно Вы искали то-то
15. DeepVarvar - 04 Июля, 2012 - 04:05:05 - перейти к сообщению
Кароч взять мой вариант, обернуть в еще один внешний цикл и юзать там $firstkey[$current] и $firstval[$current] вместо нулевого индекса как сейчас.

 

Powered by ExBB FM 1.0 RC1