foreach придава резултат на другите и се получава замяна или

C++ JAVA
novakabg
Турист
Турист
Posts: 337
Joined: Fri May 13, 2016 12:29 pm
Contact:

foreach придава резултат на другите и се получава замяна или

Post by novakabg » Thu Feb 07, 2019 2:12 pm

Здравейте, имам следният проблем и не знам от къде се появява, имам замяна на променлива или присвояване на променлива.
Първият елемент почва да за меня на другите.

Еко кода:

Code: Select all

			foreach ($grp as $grpa) {					
						  foreach ($grpa['attribute'] as $grpt) {
						    if ($grpt['name'] != "Тип") {
							 continue;
						    }  
						 
						 
							$text = $grpt['text'];
							 
						   }
						  }

И се получава следното, имам две пици.

Първа пица има цена 10.00
Втора пица има 20.00

При изкарване и двете пици имат стойноста на първата пица 10.00

Благодаря за отделеното време! :)[/code]
Last edited by novakabg on Fri Feb 08, 2019 7:58 am, edited 1 time in total.

User avatar
topchokt
Гуру
Гуру
Posts: 2148
Joined: Fri Nov 14, 2008 5:48 am
Answers: 22
Location: Карнобат

Post by topchokt » Thu Feb 07, 2019 2:55 pm

Тая променлива каква е $attributeatr['text']?

В случая дори не ти трябва foreach като така или иначе имаш:

$text = $attributeatr['text'];
Аз никъде във foreach-а не виждам $attributeatr.

User avatar
deam0n
Web-tourist
Web-tourist
Posts: 3015
Joined: Sat Oct 01, 2005 4:33 pm
Answers: 204
Location: Шопландия
Contact:

Post by deam0n » Thu Feb 07, 2019 3:34 pm

topchokt wrote:Тая променлива каква е $attributeatr['text']?

В случая дори не ти трябва foreach като така или иначе имаш:

$text = $attributeatr['text'];
Аз никъде във foreach-а не виждам $attributeatr.
Нещо май не е дал пълния код.. Иначе ако тва $text ти е цената, не го декларираш с правилната стойност явно.

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 804
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 57

Post by Revelation » Thu Feb 07, 2019 11:08 pm

В целия код няма грам смисъл или от това, което пита автора. Не може да се отговаря адекватно на така зададени въпроси.

Не се научихте, че тука няма гадатели.

novakabg
Турист
Турист
Posts: 337
Joined: Fri May 13, 2016 12:29 pm
Contact:

Post by novakabg » Fri Feb 08, 2019 7:55 am

Моля да ме извините в бързината съм редактирал нещо което не трябва,

attributeatr е grpt

Code: Select all

   foreach ($grp as $grpa) {                
                    foreach ($grpa['attribute'] as $grpt) { 
                      if ($grpt['name'] != "Тип") { 
                      continue; 
                      }  
                   
                   
                     $text = $grpt['text']; 
                      
                     } 
                    } 
Благодаря за отговорите, като цяло не разбирам къде бъркам, нещо не е наред явно. Има ли вариант нещо да бъркам в този код?

User avatar
topchokt
Гуру
Гуру
Posts: 2148
Joined: Fri Nov 14, 2008 5:48 am
Answers: 22
Location: Карнобат

Post by topchokt » Fri Feb 08, 2019 8:20 am

novakabg wrote:Моля да ме извините в бързината съм редактирал нещо което не трябва,

attributeatr е grpt

Code: Select all

   foreach ($grp as $grpa) {                
                    foreach ($grpa['attribute'] as $grpt) { 
                      if ($grpt['name'] != "Тип") { 
                      continue; 
                      }  
                   
                   
                     $text = $grpt['text']; 
                      
                     } 
                    } 
Благодаря за отговорите, като цяло не разбирам къде бъркам, нещо не е наред явно. Има ли вариант нещо да бъркам в този код?
В кое поле е цената? $text или друго?

novakabg
Турист
Турист
Posts: 337
Joined: Fri May 13, 2016 12:29 pm
Contact:

Post by novakabg » Fri Feb 08, 2019 8:46 am

Значи явно съм тъп и давам кода много лошо.

Имам следната заявка всичко е в MVC модел.

[php]

public function getPizzaAttributes($pizza_id) {
$pizza_attribute_group_data = array();

$pizza_attribute_group_query = $this->db->query("SELECT ag.attribute_group_id, agd.name FROM " . DB_PREFIX . "pizza_attribute pa LEFT JOIN " . DB_PREFIX . "attribute_pizza a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_pizza_group ag ON (a.attribute_group_id = ag.attribute_group_id) LEFT JOIN " . DB_PREFIX . "attribute_pizza_group_description agd ON (ag.attribute_group_id = agd.attribute_group_id) WHERE pa.pizza_id = '" . (int)$pizza_id . "' AND agd.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY ag.attribute_group_id ORDER BY ag.sort_order, agd.name");

foreach ($pizza_attribute_group_query->rows as $pizza_attribute_group) {
$pizza_attribute_data = array();

$pizza_attribute_query = $this->db->query("SELECT a.attribute_id, ad.name, pa.text FROM " . DB_PREFIX . "pizza_attribute pa LEFT JOIN " . DB_PREFIX . "attribute_pizza a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_pizza_description ad ON (a.attribute_id = ad.attribute_id) WHERE pa.pizza_id = '" . (int)$pizza_id . "' AND a.attribute_group_id = '" . (int)$pizza_attribute_group['attribute_group_id'] . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "' AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY a.sort_order, ad.name");

foreach ($pizza_attribute_query->rows as $pizza_attribute) {
$pizza_attribute_data[] = array(
'attribute_id' => $pizza_attribute['attribute_id'],
'name' => $pizza_attribute['name'],
'text' => $pizza_attribute['text']
);
}

$pizza_attribute_group_data[] = array(
'attribute_group_id' => $pizza_attribute_group['attribute_group_id'],
'name' => $pizza_attribute_group['name'],
'attribute' => $pizza_attribute_data
);
}

return $pizza_attribute_group_data;
}








// Проблемният код

$attribute_groups = $this->catalog_getpizza->getPizzaAttributes($p['pizza_id']);





if ($attribute_groups) {
foreach ($attribute_groups as $attribute_groupatr) {
foreach ($attribute_groupatr['attribute'] as $attributeatr) {
if ($attributeatr['name'] != "Тип") {
continue;
}


$AttType = $attributeatr['text'];

}
}
}
[/php]

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 804
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 57

Post by Revelation » Sat Feb 09, 2019 7:16 pm

Не знам защо ви е толкова трудно да си задавате въпросите и си скатавате от кода все едно някой ще ви го открадне.

1. Това е най-ужасния начин за използване на MVC. Това е просто процедурен код наблъскан по модели и контролери без капка мисъл.
2. Никой няма никаква представа кое какво връща, в какъв формат и т.н.
3. Имената на променливите са неразбираеми
4. Няма коментари
5. if() който проверява дали е различно от "Тип" нищо не говори.

По всички тези точки, аз все още не намирам свързаност с въпроса ти и проблема ти.

Съжалявам, ако ти звуча заядливо, но за да получите отговори на проблемите си и вие трябва да се постараете малко, за да получите такъв.

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1534
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 163
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Sun Feb 10, 2019 10:00 am

Да добавя, че с най-обикновено форматиране на кода и използване на [рhр] тага вместо [соdе] за подходящо оцветяване ще улесниш тези, които ти го гледат.
Счупената индентация само пречи, и многото празни редове единствено утежняват поста. Ако сам не си форматираш кода, поне като постваш въпроси го прави, за да е ясно на останалите кой for кой if коя функция къде е вложена etc..

novakabg
Турист
Турист
Posts: 337
Joined: Fri May 13, 2016 12:29 pm
Contact:

Post by novakabg » Mon Feb 11, 2019 2:15 pm

Revelation wrote:Не знам защо ви е толкова трудно да си задавате въпросите и си скатавате от кода все едно някой ще ви го открадне.

1. Това е най-ужасния начин за използване на MVC. Това е просто процедурен код наблъскан по модели и контролери без капка мисъл.
2. Никой няма никаква представа кое какво връща, в какъв формат и т.н.
3. Имената на променливите са неразбираеми
4. Няма коментари
5. if() който проверява дали е различно от "Тип" нищо не говори.

По всички тези точки, аз все още не намирам свързаност с въпроса ти и проблема ти.

Съжалявам, ако ти звуча заядливо, но за да получите отговори на проблемите си и вие трябва да се постараете малко, за да получите такъв.
Това за MVC не го казвай на никой да не ти се смеят :), този мит е само в България и в първите основи на MVC това от доста време неважи, ако трябва да направиш оптимизация за бързина в някой случай няма как да не ползваш процедурен, MVC е архитектура на шаблон никъде не се казва че не може да пишеш процедурен код, по твоята логика половината системи които се ползват от милиони хора няма да работят и са грешно написани така ли ? :shock:

Post Reply