如何根据数组中的数字改变for循环中的元素


How to alter elements in a for loop depending on numbers in an array?

如果我使用带有数字的数组,我将如何改变内部for循环中的某些元素?

$decryptFields[0] = '1';
$decryptFields[1] = '3';
if($z) == ANY OF THOSE NUMBERS IN THE ARRAY DO SOMETHING.
$x[$i][$z]

因此,如果内部for循环包含这些数字中的任何一个,则会发生一些事情例如,我可能会将文本加粗

foreach($decryptFields as $dfield) {
    echo $dfield;
}
for($i = 0; $i< 10; $i++) {
    for($z = 0; $z < $columnLength; $z++) {
        echo $x[$i][$z];
    }
}       
}

你的问题不是很清楚,但我会尽力回答。

如果你想在$z等于$decryptFields数组中的任何一个值时"做点什么",你可以简单地使用:

if(in_array($z, $decryptFields)){ /*do something*/}

编辑:$z似乎也是一个值数组。

在这种情况下,使用:

$intersection = array_intersect($z, $decryptFields);
foreach($intersection as $key=>$value){
    echo "<b>$value</b>";
} 

可能是…

for ($i = 0; $i < 10; $i++) {
  // Build a string
  $str = '';
  for ($z = 0; $z < $columnLength; $z++) {
    $str .= $x[$i][$z];
  }
  // If any of the elements of $decryptFields are present in the string, wrap
  // it in <span class='bold'></span>
  foreach ($decryptFields as $dfield) {
    if (strpos($str, $dfield) !== FALSE) {
      $str = "<span class='bold'>$str</span>";
      break;
    }
  }
  // Echo the result
  echo $str;
}

如果您需要检查多个项是否与某个数组中的任何项匹配,最好的解决方案是为数组建立索引:

foreach ($decryptFields as $key => $value) $decryptIndex[$value] = $key;

并稍后使用该索引:

if (isset($decryptIndex[$x[$i][$z]])) {
    // Do something
}

如果你需要得到$decryptFields数组中匹配元素的索引,使用$decryptIndex[$x[$i][$z]]

这是最快的方法,因为PHP中的关联数组实现非常快。