l'opérateur
foreach s'applique sur un tableau de données. Si le message d'erreur
Invalid argument supplied for foreach()
apparait c'est que ta variable dans le
foreach n'est pas un tableau.
Par déduction, l'erreur vient du fait que la variable
$cat_subs1[$parentID] n'est pas un tableau.
Voyons alors comment tu construis ta variable
$cat_subs1[$parentID].
Apparement c'est dans les lignes 92-94 que cela se passe.
voilà la boucle :
foreach($categories_start1 as $key => $value) {
if(strstr($key, '_' . $parentID . '_E')) {
$cat_subs1[$parentID][] = substr($key, 2, strpos($key, "_", 2) - 2);
}
Tu mets donc un élement dans le tableau
$cat_subs1[$parentID] tout en le construisant implicitement à 2 conditions :
1. que tu rentres dans la boucle foreach ligne 92
2. que la condition de la ligne 93 est vérifiée.
Il se peut donc si par exemple
$categories_start1 est un tableau vide ou que
strstr($key, '_' . $parentID . '_E') est faux que tu ne met jamais d'élément dans le tableau
$cat_subs1[$parentID] par la ligne 94 et donc que celui ci n'est jamais créé.
Pour remédier à cela, pense à créer explicitement ton tableau vide au départ avant de vouloir y mettre des éléments :
//créer le tableau vide au départ
$cat_subs1[$parentID] = array();
//remplir le tableau
foreach($categories_start1 as $key => $value) {
if(strstr($key, '_' . $parentID . '_E')) {
$cat_subs1[$parentID][] = substr($key, 2, strpos($key, "_", 2) - 2);
}