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 » » Вопросы новичков » Помогите разобраться с массивом

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

1. Wet - 17 Ноября, 2015 - 13:22:52 - перейти к сообщению
Подскажите люди добрые как создать массив в массиве.
Задача: Принять массив, подготовить массив для отправки (убрать лишние ключи и их значения).
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)
2. Faraon-san - 17 Ноября, 2015 - 13:45:58 - перейти к сообщению
тебе что-то подобное надо получить:
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);
3. Wet - 17 Ноября, 2015 - 14:43:40 - перейти к сообщению
сделал все в точности, но все равно перезаписывается((
4. Stierus - 18 Ноября, 2015 - 18:45:08 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $this->newArr[$key] = $newValue;
замени на
PHP:
скопировать код в буфер обмена
  1. $this->newArr[] = Array($key => $newValue);
так же для
PHP:
скопировать код в буфер обмена
  1. $this->newArr[$key] = $value;
5. Wet - 20 Ноября, 2015 - 07:02:37 - перейти к сообщению
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. }
6. vintag - 20 Ноября, 2015 - 08:47:05 - перейти к сообщению
Может я тупой, но не понял задачи Нахмурился
да и код разбирать неохото, своего достаточно.
жаль, тоже хотел порешать нечто такое же простенькое, но только без разбора чужого кода! Нахмурился Нахмурился Нахмурился Нахмурился Нахмурился
Не понял Не понял Не понял Не понял Не понял Не понял
бошка бу - бу от своего !!!!!!

 

Powered by ExBB FM 1.0 RC1