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]   

> Без описания
Noobster
Отправлено: 15 Августа, 2018 - 14:29:22
Post Id



Новичок


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


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




Имеется массив, надо определять значение и и если оно вообще имеется надо присвоить базовую переменую "$not_info"
Делаю проверку на name, и если есть присваиваю её value, если нет, тогда value присваиваю "$not_info" (наверное и по-лучще можно)
PHP:
скопировать код в буфер обмена
  1.   if($value['name'] == "Year"){
  2.     $decode_array['year'] = $value['value'];
  3.   }else{
  4.     $decode_array['year'] = $not_info;
  5.   }

Но почему-то на выходе у всех "$not_info", на сколько понял происходит перезапись, пробовал и $key присвоить, не помогло...

Спаисбо.


CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [0] => Array
  3.         (
  4.             [name] => Year
  5.             [unit] =>
  6.             [value] => 2013
  7.         )
  8.  
  9.     [1] => Array
  10.         (
  11.             [name] => Country
  12.             [unit] =>
  13.             [value] => Russia
  14.         )
  15.  
  16.     [2] => Array
  17.         (
  18.             [name] => Capacity
  19.             [unit] =>
  20.             [value] => 100000
  21.         )
  22.  
  23.     [3] => Array
  24.         (
  25.             [name] => President
  26.             [unit] =>
  27.             [value] =>
  28.         )
  29. )


PHP:
скопировать код в буфер обмена
  1. $decode_array = array();
  2. $not_info = "not_found";
  3. foreach ($Data as $key => $value) {
  4.   if($value['name'] == "Year"){
  5.     $decode_array['year'] = $value['value'];
  6.   }else{
  7.     $decode_array['year'] = $not_info;
  8.   }
  9.  
  10.   if($value['name'] == "Country"){
  11.     $decode_array['country'] = $value['value'];
  12.   }else{
  13.     $decode_array['country'] = $not_info;
  14.   }
  15.  
  16.   if($value['name'] == "City"){
  17.     $decode_array['city'] = $value['value'];
  18.   }else{
  19.     $decode_array['city'] = $not_info;
  20.   }
  21.  
  22.   if($value['name'] == "Capacity"){
  23.     $decode_array['capacity'] = $value['value'];
  24.   }else{
  25.     $decode_array['capacity'] = $not_info;
  26.   }
  27.  
  28.   if($value['name'] == "President"){
  29.     $decode_array['president'] = $value['value'];
  30.   }else{
  31.     $decode_array['president'] = $not_info;
  32.   }
  33. }

(Отредактировано автором: 15 Августа, 2018 - 14:30:07)

 
 Top
Noobster
Отправлено: 16 Августа, 2018 - 13:50:51
Post Id



Новичок


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


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




Всё так криво что некому помочь? Растерялся
 
 Top
Строитель Модератор
Отправлено: 16 Августа, 2018 - 21:12:47
Post Id



Участник


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


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




Noobster, кривое пояснение: Имеется массив, надо определять значение - какое значение, "Year"?
 
 Top
Noobster
Отправлено: 20 Августа, 2018 - 17:52:14
Post Id



Новичок


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


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




В данном прим. на выходе должно получится:
PHP:
скопировать код в буфер обмена
  1. $decode_array['year'] = $value['value'];
  2. $decode_array['country'] = $value['value'];
  3. $decode_array['city'] = $not_info;
  4. $decode_array['capacity'] = $value['value'];
  5. $decode_array['president'] = $not_info;


т.е. city вообще нету в массиве, значит её значение будет переменной $not_info,
и president значение "value" пустое "", значит её значение тоже будет переменной $not_info,

т.е. на выходе получается:
PHP:
скопировать код в буфер обмена
  1. $decode_array['year'] = "2013";
  2. $decode_array['country'] = "Russia";
  3. $decode_array['city'] = $not_info;
  4. $decode_array['capacity'] = "100000";
  5. $decode_array['president'] = $not_info;


Спасибо.
 
 Top
teleoperator27
Отправлено: 21 Августа, 2018 - 00:23:39
Post Id



Посетитель


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


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




Ну объяви массив заранее

PHP:
скопировать код в буфер обмена
  1. $not_info = 'not_info';
  2.  
  3. $decode_array = array(
  4.         'Year'     =>$not_info,
  5.         'Country'  => $not_info,
  6.         'City'     => $not_info,
  7.         'Capacity' =>$not_info,
  8.         'President'=>$not_info
  9. );
  10.  
  11. foreach ($array as $value) {
  12.  
  13.         if ( $value['value']) $decode_array[$value['name']] = $value['value'];
  14.        
  15. }


результ
PHP:
скопировать код в буфер обмена
  1. (
  2.     [Year] => 2013
  3.     [Country] => Russia
  4.     [City] => not_info
  5.     [Capacity] => 100000
  6.     [President] => not_info
  7. )
  8.  
 
My status
 Top
Noobster
Отправлено: 22 Августа, 2018 - 14:16:44
Post Id



Новичок


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


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




Спасибо, вроде работает, вот только как в
PHP:
скопировать код в буфер обмена
  1. if ( $value['value']) $decode_array[$value['name']] = $value['value'];
сделать условие на проверку ключей только тех которые в массиве $decode_array

т.е. в "$array", напр. есть ключь "Sports", вмоём массиве нету ключа и сейчас кричит на ошибку.

Пробовал так не помогло:
PHP:
скопировать код в буфер обмена
  1. if ($value['name'] === $decode_array[$value['name']]) $decode_array[$value['name']] = $value['value'];
, наверное array_key_exists как-то надо использовать.

Спасибо. Растерялся
 
 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