Page 1 sur 1

Reformer un Array avec deux différents Array

Posté : 17 juil. 2014, 15:06
par Keuns76
Bonjour à toutes et à tous,

Voici ma difficulté:
J'ai un array dans lequel j'aimerai trier l'information pour en refaire un nouveau:
array (size=1)
1 =>
array (size=3)
443 =>
array (size=7)
'count' => string '1' (length=1)
'id' => string '443' (length=3)
'name' => string 'Eau gazeuse' (length=11)
'price' => string '2.00' (length=4)
'pricetotal' => float 2
'customgroupid' => int 21
'customgroupname' => string 'Boisson Classique a 2 ou Boisson Gourmande a 3,00' (length=59)
358 =>
array (size=7)
'count' => string '1' (length=1)
'id' => string '358' (length=3)
'name' => string 'Quiche lorraine' (length=15)
'price' => string '3.50' (length=4)
'pricetotal' => float 3.5
'customgroupid' => int 23
'customgroupname' => string 'Les quiches a 3.50' (length=22)
361 =>
array (size=7)
'count' => string '1' (length=1)
'id' => string '361' (length=3)
'name' => string 'Quiche poireau' (length=14)
'price' => string '3.50' (length=4)
'pricetotal' => float 3.5
'customgroupid' => int 23
'customgroupname' => string 'Les quiches a 3.50' (length=22)

De ce tableau j'aimerais pourvoir en faire un nouveau sous cette forme:
array
Les quiches a 3.50 =>
array
0 => Quiche poireau
1 => Quiche lorraine
Boisson classique =>
array
0 => Coca
1 => Ice tea

Pour résumer:
J'aimerais prendre les catégories des ingrédients, en faire la clé d'un tableau et lister les ingrédients à l'intérieure.

Je vous remercie d'avance pour votre aide. Cela va faire une semaine que je m'arrache les cheveux là-dessus.

Pour le moment j'ai réussi à faire cet array:
array (size=2)
'Boisson Classique à 2 € ou Boisson Gourmande à 3,00 €' =>
array (size=1)
0 => string 'Eau gazeuse' (length=11)
'Les quiches à 3,50€' =>
array (size=1)
0 => string 'Quiche poireau' (length=14)

Le problème c'est que je ne peux enregistrer qu'un ingrédient par catégorie. Je pense que mon foreach écrase l’ancien ingrédient.


Merci encore :D

Re: Reformer un Array avec deux différents Array

Posté : 17 juil. 2014, 18:27
par Elie
Si tu peux mettre les codes PHP du array et pas le var_dump et les mettres dans les balises [ PHP] ca sera plus simple ...

Code php

Posté : 17 juil. 2014, 19:44
par Keuns76
Voici le code:

Pour info, le code provient d'un plugin wordpress que je veux modifier:

/*group items**/
$additionalInfo=array();
$iGroupCount=count($ingredientGroup);
$groupIngredients=array();
if($iGroupCount>0){
$i=1;
foreach($ingredientGroup as $gId=>$iArr){
$additionalInfo[$gId]='';/*initialize string*/
$additionalInfoData[$gId]=array();/*initialize array*/
/**get ingredients in group***/
if(is_array($iArr)){
foreach($iArr as $k=>$v){
$thisIngCount=count($v);
$thisIngDisplay=''.$thisIngCount.'x ';
/*omit "1x" if single ingredient and enabled**/
if($thisIngCount==1 && $options['options']['ingredients_omit_single_count']){
$thisIngDisplay='';
}
/** mon code pdl**/
/** ancien : $groupIngredients[$gId][]=''.$thisIngDisplay.''.$v[0]['name'].''; **/
$groupIngredientsPdl[$gId][]=''.$thisIngDisplay.''.$additionalInfoData[$gId][$k]['name'].'';
/** mon code pdl fin **/
/*store the data of ingredient*/
$additionalInfoData[$gId][$k]['count']=''.$thisIngCount.'';
$additionalInfoData[$gId][$k]['id']=''.$v[0]['id'].'';
$additionalInfoData[$gId][$k]['name']=''.$v[0]['name'].'';
$additionalInfoData[$gId][$k]['price']=''.$v[0]['price'].'';
$additionalInfoData[$gId][$k]['pricetotal']=$v[0]['price']*$thisIngCount;
$additionalInfoData[$gId][$k]['customgroupid']=!isset($ingrCustomGroupId[$k]) ? '' : $ingrCustomGroupId[$k] ;
/** mon code pdl **/
$idgroup=$ingrCustomGroupId[$k];
$additionalInfoData[$gId][$k]['customgroupname']=$options['ingredients_custom_groups'][$idgroup]['label'];

$groupIngredientsPdl = array();

foreach($additionalInfoData[$gId] as $k => $v) {
$customgroupname = $additionalInfoData[$gId][$k]['customgroupname'];
$nameingredient = $additionalInfoData[$gId][$k]['name'];
$groupIngredientsPdl[$customgroupname]=array();
$groupIngredientsPdl[$customgroupname][] = $additionalInfoData[$gId][$k]['name'];
}
/** mon code pdl fin **/
}
/** mon code pdl avant : implode(", ",$groupIngredients[$gId]);**/
$additionalInfo[$gId].=implode(" \r\n ",$groupIngredientsPdl[$gId]);
/** mon code pdl fin **/
}

$i++;
}
}

Le tableau que j'ai créé : $groupIngredientsPdl
Le tableau exposé dans mon premier post: $additionalInfoData.

Le code que j'ai rajouté ce situe entre /** mon code pdl **/ et /** mon code pdl fin **/.

Je te remercie de m'accorder du temps.

Re: Reformer un Array avec deux différents Array

Posté : 17 juil. 2014, 19:57
par Elie
Donc les balises [ PHP] toujours pas ...

Tu peux nous donner un exemple de la variable $ingredientGroup

Re: Reformer un Array avec deux différents Array

Posté : 18 juil. 2014, 08:34
par Keuns76
Re-bonjour,

Pour la variable $ingredientGroup, elle contient les ingrédients sélectionnés: Voici le var_dump de cette variable
array (size=1)
1 =>
array (size=3)
443 =>
array (size=1)
0 =>
array (size=4)
'name' => string 'Eau gazeuse' (length=11)
'id' => int 443
'price' => string '2.00' (length=4)
'customgroupname' => string '' (length=0)
358 =>
array (size=1)
0 =>
array (size=4)
'name' => string 'Quiche lorraine' (length=15)
'id' => int 358
'price' => string '3.50' (length=4)
'customgroupname' => string '' (length=0)
361 =>
array (size=1)
0 =>
array (size=4)
'name' => string 'Quiche poireau' (length=14)
'id' => int 361
'price' => string '3.50' (length=4)
'customgroupname' => string '' (length=0)

Qu'entends-tu par les balises [ PHP ] ?

Je te remercie encore une fois.

Re: Reformer un Array avec deux différents Array

Posté : 18 juil. 2014, 08:47
par Elie
Stp... Utile print_r pour m'afficher la variable

Re: Reformer un Array avec deux différents Array

Posté : 18 juil. 2014, 09:45
par Keuns76
Voici en print_r

Array
(
[1] => Array
(
[443] => Array
(
[0] => Array
(
[name] => Eau gazeuse
[id] => 443
[price] => 2.00
[customgroupname] =>
)

)

[358] => Array
(
[0] => Array
(
[name] => Quiche lorraine
[id] => 358
[price] => 3.50
[customgroupname] =>
)

)

[361] => Array
(
[0] => Array
(
[name] => Quiche poireau
[id] => 361
[price] => 3.50
[customgroupname] =>
)

)

)

)

Toujours et encore merci :D

Re: Reformer un Array avec deux différents Array

Posté : 18 juil. 2014, 10:19
par Elie
<?php

$ingredientGroup = array (

	'1' => array (
		'443' => array (
			'0' => array (
				'name' => 'Eau gazeuse',
				'id' => 443,
				'price' => 2.00,
				'customgroupname' => '',
				)
			
			),
	
		'358' => array (
			'0' => array (
				'name' => 'Quiche lorraine',
				'id' => 358,
				'price' => 3.50,
				'customgroupname' => '',
			)
		),
	
		'361' => array (
			'0' => array (
				'name' => 'Quiche poireau',
				'id' => 361,
				'price' => 3.50,
				'customgroupname' => '',
			)
	
		)
	
	)

);

$array = array();
foreach($ingredientGroup as $k => $v) {
	foreach($v as $key => $val) {
		$cle = number_format($val[0]['price'], 2);
		$array[$cle][$val[0]['id']] = $val[0]['name'];
	}
}

print_r($array);

?>
Je dirais ca ...

Re: Reformer un Array avec deux différents Array

Posté : 18 juil. 2014, 11:18
par keuns76
Génial, cela fonctionne.

Merci beaucoup Elie ! =D>

Merci pour ton implication.