将2d数组与1D数组迭代进行比较

时间:2017-05-11 10:00:55

标签: php arrays multidimensional-array

我有2个数组转换(2维)和行(1维)。翻译保存数组,当行和翻译[] [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次。我知道问题在于我迭代数组的方式,我该如何解决这个问题?将不胜感激。

1 个答案:

答案 0 :(得分:1)

试试这个,希望这会帮助你。您可以只使用$lines检查元素是否存在,而不是循环遍历in_array数组。

Try this code snippet here

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