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]   

> Описание: Помогите разобраться с массивом
Wet
Отправлено: 17 Ноября, 2015 - 13:22:52
Post Id



Новичок


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


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




Подскажите люди добрые как создать массив в массиве.
Задача: Принять массив, подготовить массив для отправки (убрать лишние ключи и их значения).
PHP:
скопировать код в буфер обмена
  1. //нужен примерно такой массив
  2. (
  3.     [0] => Array
  4.         (
  5.             [a] => 0
  6.             [b] => 1
  7.         ),
  8.     [1] => Array
  9.         (
  10.             [a] => 0
  11.             [b] => 11
  12.         )
  13. )
  14. //а получается только такой(
  15. (
  16.             [a] => 0
  17.             [b] => 1
  18. )
  19. class newClass {
  20.   //массив для отправки
  21.   $newArr = array();
  22.  
  23.   //принимаем массив
  24.   function importData ($array){
  25.     //передаем массив функции дабы убрать лишние ключи и их значения
  26.     $this->filterData($array);
  27.    
  28.     //выводит только 1 массив, а нужно все что пришли в данную переменную $array
  29.     echo '<pre style="color:green;">'; var_export($this->newArr); echo '</pre>';
  30.   }
  31.    
  32.     //функция для фильтрации массива
  33.     private function filterData($array)
  34.     {
  35.         //пробегаемся по массиву (добираемся до нужных ключей и значений)
  36.         foreach($array as $arrays)
  37.         {
  38.                 foreach($arrays as $item)
  39.                 {
  40.                         foreach($item as $key => $value)
  41.                         {
  42.                                 //фильтруем массив
  43.                                 if($key == 'ID'){}
  44.                                 elseif($key == 'map')
  45.                                 {
  46.                                         if($value == 0){ $newValue = false; } else { $newValue = true; }
  47.                                         //тут начинаются проблемы, ключи просто на просто перезаписываются
  48.                                         $this->newArr[$key] = $newValue;
  49.                                 }      
  50.                                 else
  51.                                 {
  52.                                         //тут начинаются проблемы, ключи просто на просто перезаписываются
  53.                                         $this->newArr[$key] = $value;
  54.                                 }      
  55.                         }
  56.                 }
  57.         }
  58.     }
  59.   }
  60. }
  61. $newClass = new newClass;
  62. //передаем некий массив
  63. $newClass->$importData($array)

(Отредактировано автором: 17 Ноября, 2015 - 13:29:07)

 
 Top
Faraon-san
Отправлено: 17 Ноября, 2015 - 13:45:58
Post Id



Посетитель


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


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




тебе что-то подобное надо получить:
PHP:
скопировать код в буфер обмена
  1. class newClass {
  2.         //массив для отправки
  3.         public $newArr = array();
  4.  
  5.         //принимаем массив
  6.         function importData ($array){
  7.                 //передаем массив функции дабы убрать лишние ключи и их значения
  8.                 $this->newArr = $this->filterData($array);
  9.  
  10.                 //выводит только 1 массив, а нужно все что пришли в данную переменную $array
  11.                 echo '<pre style="color:green;">';
  12.                 var_dump($this->newArr);
  13.                 echo '</pre>';
  14.         }
  15.  
  16.     //функция для фильтрации массива
  17.     private function filterData($data, $array = array()){
  18.                 //пробегаемся по массиву (добираемся до нужных ключей и значений)
  19.                 foreach($data as $key=>$item){
  20.                         if(is_array($item)){
  21.                                 $array[$key] = array();
  22.                                 $array[$key] = $this->filterData($item, $array[$key]);
  23.                         }else{
  24.                                 //фильтруем массив
  25.                                 if($key == 'ID'){
  26.  
  27.                                 }elseif($key == 'map'){
  28.                                         if($item == 0){
  29.                                                 $newValue = false;
  30.                                         }else{
  31.                                                 $newValue = true;
  32.                                         }
  33.                                         //тут начинаются проблемы, ключи просто на просто перезаписываются
  34.                                         $array[$key] = $newValue;
  35.                                 }else{
  36.                                         //тут начинаются проблемы, ключи просто на просто перезаписываются
  37.                                         $array[$key] = $item;
  38.                                 }
  39.                         }
  40.                 }
  41.                 return $array;
  42.         }
  43. }
  44.  
  45. $array = array(0 => array('map' => 0, 'b' => 1), 1 => array('a' => 0, 'b' => 11));
  46. $newClass = new newClass;
  47. //передаем некий массив
  48. $newClass->importData($array);
 
 Top
Wet
Отправлено: 17 Ноября, 2015 - 14:43:40
Post Id



Новичок


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


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




сделал все в точности, но все равно перезаписывается((
 
 Top
Stierus Супермодератор
Отправлено: 18 Ноября, 2015 - 18:45:08
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




PHP:
скопировать код в буфер обмена
  1. $this->newArr[$key] = $newValue;
замени на
PHP:
скопировать код в буфер обмена
  1. $this->newArr[] = Array($key => $newValue);
так же для
 
My status
 Top
Wet
Отправлено: 20 Ноября, 2015 - 07:02:37
Post Id



Новичок


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


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




Stierus пишет:
PHP:
скопировать код в буфер обмена
  1. $this->newArr[$key] = $newValue;
замени на
PHP:
скопировать код в буфер обмена
  1. $this->newArr[] = Array($key => $newValue);
так же для

Спасибо, я на днях сделал так:
PHP:
скопировать код в буфер обмена
  1. private function filterData($importArray, $arrayToExport = array(), $newKeys)
  2. {
  3.         foreach($importArray as $newdata)
  4.         {
  5.                 foreach($newdata as $index=>$val)
  6.                 {
  7.                         if(is_array($val))
  8.                         {      
  9.                                 $combineArray = array_combine($newKeys, $val);
  10.  
  11.                                 foreach($combineArray as $key=>$value){
  12.                                         if( $key == 'ID' ){}
  13.                                         elseif( $key == 'key1' )
  14.                                         {
  15.                                                 if($value == 0){ $newValue = false; } else { $newValue = true; }
  16.                                                 $arrayToExport[$index][$key] = $newValue;
  17.                                         }      
  18.                                         elseif( ($key == 'date1' || $key == 'date2') && $value != '' )
  19.                                         {
  20.                                                 $date = date("Ymd His", strtotime($value));
  21.                                                 $arrayToExport[$index][$key] = $date;
  22.                                         }      
  23.                                         else
  24.                                         {
  25.                                                 $arrayToExport[$index][$key] = $value;
  26.                                         }      
  27.                                 }
  28.                         }      
  29.                 }
  30.         }
  31.         return $arrayToExport;
  32. }
 
 Top
vintag
Отправлено: 20 Ноября, 2015 - 08:47:05
Post Id



Новичок


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


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




Может я тупой, но не понял задачи Нахмурился
да и код разбирать неохото, своего достаточно.
жаль, тоже хотел порешать нечто такое же простенькое, но только без разбора чужого кода! Нахмурился Нахмурился Нахмурился Нахмурился Нахмурился
Не понял Не понял Не понял Не понял Не понял Не понял
бошка бу - бу от своего !!!!!!
 
 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