比较二维阵列与一维数组迭代



我有 2 个数组翻译(二维(和行(一维(。 translations 包含数组,当行和翻译 [][i] 的索引匹配时,我想将该行打印为粗体。否则按原样打印下一行。 我已经用这段代码尝试过了。

$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>";
           }
        }
    }
}

这里的问题是它打印 3 次翻译子数组元素。 我知道问题出在我迭代数组的方式上,我应该如何解决这个问题? 帮助将不胜感激。

试试这个,希望这会帮助你。与其循环遍历数组$lines不如in_array检查元素是否存在。

在此处尝试此代码片段

<?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;
        }
    }
}

最新更新