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]   

> Без описания
difight
Отправлено: 08 Июля, 2013 - 17:13:42
Post Id



Посетитель


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


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




Приветствую, чё то не могу сообразить никак, есть массив
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [name] => Array
  4.         (
  5.             [0] => 1.png
  6.             [1] => 2.png
  7.             [2] => 3.png
  8.         )
  9.  
  10.     [type] => Array
  11.         (
  12.             [0] => image/png
  13.             [1] => image/png
  14.             [2] => image/png
  15.         )
  16.  
  17.     [tmp_name] => Array
  18.         (
  19.             [0] => /home/u158682/bgrr.ru/tmp/phpLgeoZt
  20.             [1] => /home/u158682/bgrr.ru/tmp/phpDItBiA
  21.             [2] => /home/u158682/bgrr.ru/tmp/phphPYcyq
  22.         )
  23.  
  24.     [error] => Array
  25.         (
  26.             [0] => 0
  27.             [1] => 0
  28.             [2] => 0
  29.         )
  30.  
  31.     [size] => Array
  32.         (
  33.             [0] => 150308
  34.             [1] => 150308
  35.             [2] => 234556
  36.         )
  37.  
  38. )
  39.  

из него надо получить массивы вида
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Array (     [name] => 3.png     [type] => image/png     [tmp_name] => /home/u158682/bgrr.ru/tmp/phpXM6YSO     [error] => 0     [size] => 234556 )
  3.  


подскажите плз Улыбка
 
My status
 Top
EuGen Администратор
Отправлено: 08 Июля, 2013 - 17:17:24
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




difight
PHP:
скопировать код в буфер обмена
  1. $rgData=array(
  2.    'name'=>array('foo', 'bar'),
  3.    'type'=>array('txt', 'doc'),
  4.    'size'=>array(56234, 73452)
  5. );
  6.  
  7. $rgResult=array_map('array_pop', $rgData);
  8. //var_dump($rgResult);

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
difight
Отправлено: 08 Июля, 2013 - 17:23:34
Post Id



Посетитель


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


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




EuGen пишет:
difight
PHP:
скопировать код в буфер обмена
  1. $rgData=array(
  2.    'name'=>array('foo', 'bar'),
  3.    'type'=>array('txt', 'doc'),
  4.    'size'=>array(56234, 73452)
  5. );
  6.  
  7. $rgResult=array_map('array_pop', $rgData);
  8. //var_dump($rgResult);

?

Не совсем корректно получается, мне надо что бы 3 массива получилось

(Отредактировано автором: 08 Июля, 2013 - 17:23:55)

 
My status
 Top
EuGen Администратор
Отправлено: 08 Июля, 2013 - 17:32:05
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




difight
Это не было очевидно из примера. Тогда так:
PHP:
скопировать код в буфер обмена
  1. $rgData=array(
  2.    'name'=>array('foo', 'bar'),
  3.    'type'=>array('txt', 'doc'),
  4.    'size'=>array(56234, 73452)
  5. );
  6.  
  7. $rgResult=array();
  8. array_walk($rgData, function($rgValue, $sKey) use (&$rgResult)
  9. {
  10.    array_walk($rgValue, function($sValue, $iKey) use (&$rgResult, $sKey)
  11.    {
  12.       $rgResult[$iKey][$sKey] = $sValue;
  13.    });
  14. });
  15. //var_dump($rgResult);


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
difight
Отправлено: 08 Июля, 2013 - 17:37:30
Post Id



Посетитель


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


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




EuGen пишет:
difight
Это не было очевидно из примера. Тогда так:
PHP:
скопировать код в буфер обмена
  1. $rgData=array(
  2.    'name'=>array('foo', 'bar'),
  3.    'type'=>array('txt', 'doc'),
  4.    'size'=>array(56234, 73452)
  5. );
  6.  
  7. $rgResult=array();
  8. array_walk($rgData, function($rgValue, $sKey) use (&$rgResult)
  9. {
  10.    array_walk($rgValue, function($sValue, $iKey) use (&$rgResult, $sKey)
  11.    {
  12.       $rgResult[$iKey][$sKey] = $sValue;
  13.    });
  14. });
  15. //var_dump($rgResult);


Странно, но так у меня вообще страница отказывается загружаться Улыбка Просто белая страница и все
 
My status
 Top
EuGen Администратор
Отправлено: 08 Июля, 2013 - 17:41:48
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Тогда смотрите ошибки. error_reporting(2047) и т.п. - http://phpfaq[dot]ru/debug
Если есть ошибка, то не думаю, что она в приведённом коде. Возможно, PHP 5.2 ? Код выше для PHP 5.3
Для 5.2 - используйте цикл:
PHP:
скопировать код в буфер обмена
  1. $rgData=array(
  2.    'name'=>array('foo', 'bar'),
  3.    'type'=>array('txt', 'doc'),
  4.    'size'=>array(56234, 73452)
  5. );
  6.  
  7. $rgResult=array();
  8. foreach($rgData as $sKey=>$rgValue)
  9. {
  10.    foreach($rgValue as $iKey=>$sValue)
  11.    {
  12.       $rgResult[$iKey][$sKey] = $sValue;
  13.    };
  14. };

- однако я рекомендую скорее обновиться как минимум до 5.3 (лучше до 5.4, ещё лучше - до 5.5)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
difight
Отправлено: 08 Июля, 2013 - 17:53:02
Post Id



Посетитель


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


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




EuGen пишет:
Тогда смотрите ошибки. error_reporting(2047) и т.п. - http://phpfaq[dot]ru/debug
Если есть ошибка, то не думаю, что она в приведённом коде. Возможно, PHP 5.2 ? Код выше для PHP 5.3
Для 5.2 - используйте цикл:
PHP:
скопировать код в буфер обмена
  1. $rgData=array(
  2.    'name'=>array('foo', 'bar'),
  3.    'type'=>array('txt', 'doc'),
  4.    'size'=>array(56234, 73452)
  5. );
  6.  
  7. $rgResult=array();
  8. foreach($rgData as $sKey=>$rgValue)
  9. {
  10.    foreach($rgValue as $iKey=>$sValue)
  11.    {
  12.       $rgResult[$iKey][$sKey] = $sValue;
  13.    };
  14. };

- однако я рекомендую скорее обновиться как минимум до 5.3 (лучше до 5.4, ещё лучше - до 5.5)

Так все работает, спасибо Улыбка
 
My status
 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