Как да избегна foreach в друг foreach?

Hous

Registered
Имам два масива , като в единия се съдържат избрани катеогории, а в другия всички категории:

PHP:
$chosencats=explode(',', $whichcategory); 
foreach($chosencats as $catt) {
		if(ctype_digit($catt)){
		echo " ".$catt."<br>";
		}
}


//10 reda po nadolu imam dr array


$allcatidsfromdb="1,2,3,4,5,6,7,8,9,11";//tova e samo za primer
$category_ids = $allcatidsfromdb;
foreach($category_ids as $cat_id) {
		  echo ' '.$cat_id.' <br>';
		}

И сега въпроса ми:Как да направя така, че когато някоя стойност от избраните (първия масив) съвпадне със някоя от всички категории (втория масив) да изписвам това във втория масив :

PHP:
echo "<span style='color:red;'>".$cat_id."<br>";

без да се налага да правя foreach в друг foreach?

т.е нещо като:

PHP:
foreach($category_ids as $cat_id){
if($catt=$cat_id){
//color red 
}
}
 
Ползвай асоциативен масив с id-та на категориите :)
 
използвай array_search(); функцията за да видиш кое с кое съвпада;

Пример:
PHP:
$my_cat_id = "4";
$cat_list="1,2,3,4,5,6,7,8,9,11";//tova e samo za primer
$car_arr = explode(",", $cat_list);
foreach($cat_arr as $cat_id)
{
    if($cat_id == $my_cat_id)
  { 
     $ret .= "<span>КАТЕГОРИЯ: $cat_id</span> ; ";
   }
}

Пример 2:
PHP:
$my_cat_id = "4";
$cat_list="1,2,3,4,5,6,7,8,9,11";//tova e samo za primer
$car_arr = explode(",", $cat_list);
$key = array_search($my_cat_id, $cat_arr);
print_r($key);
echo "<hr>";
echo $cat_arr[$key]; // krainata kategoriq
:idea: :idea: :?:
 
След 30 мин четене и малко проби се получи мисля:
PHP:
$associativearray=array();

$allcatz=explode(',', $whichcategory); 
		foreach($allcatz as $catt) {
			$associativearray[]=$catt;
}



		foreach($category_ids as $cat_id) {
		  if(in_array($cat_id, $associativearray)){
		  echo '<span style="color:red;">'.$cat_id.'</span><br> ';
		  }else{
		  echo ' '.$cat_id.'<br>';}
		}
 
Ето един супер прост пример как да си събереш циклите.
PHP:
$cats = array(
1 => array(
               'name' => 'some_category_name1',
               'desc' => 'some_category_desc1',
               'chosen' => true
               ),
2 => array(
               'name' => 'some_category_name2',
               'desc' => 'some_category_desc2',
               'chosen' => false
               ),
3 => array(
               'name' => 'some_category_name3',
               'desc' => 'some_category_desc3',
               'chosen' => true
               )

);

foreach($cats as $id => $cat) {

if($cat['chosen'] == true) {
     echo '<br />Category '.$cat['name'].' with ID '.$id.' is chosen. ';
  }
else {
    echo '<br />Category '.$cat['name'].' with ID '.$id.' is NOT chosen. ';
}
echo '<br /><hr /><br /> ';
 
}
 

Back
Горе