我有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次。我知道问题在于我迭代数组的方式,我该如何解决这个问题?将不胜感激。
答案 0 :(得分:1)
试试这个,希望这会帮助你。您可以只使用$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;
}
}
}