I have 2 arrays translations(2-dimensional),and line(1-dimensional). translations holds arrays, when ever the index for line and translation[][i] matches i want to print that line bold.otherwise print next line as it is. i have tried it with this code.
$translations[0]=array("Volvo", "BMW", "Toyota");
$translations[1]=array("ferrari", "mustang", "bently");
$lines=array("mustang","BMW");
for($i=0;$i<count($translations);$i++){
for($j=0;$j<count($translations[$i]);$j++){
foreach ($lines as $key =>$line){
if($d==$translation[$i][$j]) {
echo "<b>" .$translation[$i][$j] . "</b><br>" ;
}
else{
echo $translation[$i][$j]."<br>";
}
}
}
}
the problem here is that it prints translation subarrays element 3 times. i know the problem is in the way i am iterating the arrays, how should i fix this problem? help will be appreciated.
Try this, Hope this will help you out. Instead of looping over $lines
array, you can just check with in_array
that whether an element is present or not.
<?php
ini_set('display_errors', 1);
$translations[0] = array("Volvo", "BMW", "Toyota");
$translations[1] = array("ferrari", "mustang", "bently");
$lines = array("mustang", "BMW");
for ($i = 0; $i < count($translations); $i++)
{
for ($j = 0; $j < count($translations[$i]); $j++)
{
if (in_array($translations[$i][$j], $lines))
{
echo "<b>".$translations[$i][$j] ."</b>". PHP_EOL;
}
else
{
echo $translations[$i][$j] .PHP_EOL;
}
}
}