Ik ben bezig met een filter voor een webshop om de producten te filteren die je aanklikt in één van de checkboxes.

Nu krijg ik de volgende error:
on line 46 Warning: array_search() expects parameter 2 to be array, string given in

<?php


class CategoryselectorsTemplate extends ActiveTemplate {
    public function getHtml($var) {
        $html = '';
    
        /* Alle attribute arrays setten */
        $attributeids = array(
            1     =>    'fabrikant',
            //3    =>    'artikelnummer',
            4     =>    'geslacht',
            //6    =>    'maat',
            7    =>    'kleur',
            8    =>    'sexe',
            
        );
        
        foreach($attributeids AS $id => $keyname){
            $values = WebshopModel::instance()->getAttributeValues($id, "", "15");
            $stockvals = array();
            
            foreach($values AS $val){ // Alle values bij langs
                
                if(strlen($val) > 0){ // Zijn ze niet leeg?
                    
                    $ex = explode(',',$val);
                    foreach($ex AS $name){
                        if(!in_array($name,$stockvals)){
                            array_push($stockvals,$name);
                        }
                    }
                }
            }
            
            sort($stockvals);
            
            if(count($stockvals) > 1){
            
                $html .= '<aside class="widget widget_product_color">';
                $html .= '<h3 class="widget-title">'.ucfirst($keyname).'</h3>';
                $html .= '<ul>';
                
                // Html Genereren
                foreach($stockvals AS $val){
                    if (is_int(array_search($val,$keyname)) OR is_int(array_search($val,$keyname))) {
                        $add = '';
                    } else {
                        $add = '';
                    }
                    $html .= '<li><input type="checkbox" name="'.$keyname.'[]" value="'.$val.'" '.$add.'> '.$val.'</li>';
                    
                    
                        
                }
                $html .= ' </ul></aside>';
            }
        }
        
        return $html;
    }
    

}


?>


Doe ik nu iets verkeerds of ligt het aan de code?.
Je foutmelding zegt het al. Wat is de uitkomst van beide parameters?
De uitkomst is tot nu toe niks! Als ik de filtercheck doet hij niks
Maar waar komt $keyname dan vandaan?
Ik post de hele code wel even!

<?php


class CategoryselectorsTemplate extends ActiveTemplate {
	public function getHtml($var) {
		$html = '';
	
		/* Alle attribute arrays setten */
		$attributeids = array(
			1 	=>	'fabrikant',
			//3	=>	'artikelnummer',
			4 	=>	'geslacht',
			//6	=>	'maat',
			7	=>	'kleur',
			8	=>	'sexe',
			
		);
		
		foreach($attributeids AS $id => $keyname){
			$values = WebshopModel::instance()->getAttributeValues($id, "", "15");
			$stockvals = array();
			
			foreach($values AS $val){ // Alle values bij langs
				
				if(strlen($val) > 0){ // Zijn ze niet leeg?
					
					$ex = explode(',',$val);
					foreach($ex AS $name){
						if(!in_array($name,$stockvals)){
							array_push($stockvals,$name);
						}
					}
				}
			}
			
			sort($stockvals);
			
			if(count($stockvals) > 1){
			
				$html .= '<aside class="widget widget_product_color">';
				$html .= '<h3 class="widget-title">'.ucfirst($keyname).'</h3>';
				$html .= '<ul>';
				
				// Html Genereren
				foreach($stockvals AS $val){
					if (is_int(array_search($val,$keyname)) OR is_int(array_search($val,$keyname))) {
						$add = ''; 
					} else {
						$add = '';
					}
					$html .= '<li><input type="checkbox" name="'.$keyname.'[]" value="'.$val.'" '.$add.'> '.$val.'</li>';
					
					
						
				}
				$html .= ' </ul></aside>';
			}
		}
		
		return $html;
	}
	

}


?>
		
		
<?php
if (is_int(array_search($val,$keyname)) OR is_int(array_search($val,$keyname))) {
?>

Ik vind deze regel sowieso curieus. Je controleert hier twee keer hetzelfde? :/
Aah, my bad. Wat zou ik er aan moeten veranderen dan?
Wichard Schievink op 30/06/2016 14:09:58

Aah, my bad. Wat zou ik er aan moeten veranderen dan?


Uh, eentje weghalen misschien?
Gedaan, maar nog steeds dezelfde error code
on line 46 Warning: array_search() expects parameter 2 to be array
Omdat je als tweede argument geen array gebruikt. De parameters zijn in de volgorde needle gevolgd door haystack. Wat is $val? Is dit een array?
$val is de subcategorie van $keyname
bijv:

Reageren