2011-11-28 65 views
0

如果我使用帶數字的數組,我將如何更改inner for循環中的某些元素?如何根據數組中的數字更改for循環中的元素?

e.g

$decryptFields[0] = '1'; 
$decryptFields[1] = '3'; 

if($z) == ANY OF THOSE NUMBERS IN THE ARRAY DO SOMETHING. 

$x[$i][$z] 

因此,如果內部for循環中包含任何這些數字,然後會有些事情發生e.g也許我會加粗文本中。

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

什麼是$ z和$ x? – 472084

回答

1

你的問題不是很清楚,但我會盡我所能回答。

如果你想要做某些事情「,如果價值$ z等於任何數組$ decryptFields中的值,你可以簡單地使用:

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

編輯:看來$ z是也是一個數組值。

在這種情況下,使用方法:

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

也許像...

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

如果您需要檢查匹配多個項目的一些陣列的任何項目,最好的解決辦法是建立索引的數組:

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

稍後使用該索引:

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

如果您需要獲取$ decryptFields數組中的匹配元素的索引,我們e $ decryptIndex [$ x [$ i] [$ z]]

這是最快的方法,因爲PHP中的關聯數組實現非常快。

相關問題