2013-03-09 97 views
-1

我有一個並且還具有一個陣列與兩個鍵如下:數組鍵比較隨着串字符

$string = "black"; // a string that has 5 characters 

$array = array(0=>"c", // an array that has two keys "c" and "b" 
       1=>"b") 

要求:

我需要一個循環,進行迭代,並且將數組的第一個鍵值與字符串的所有字符進行比較,然後將數組的第二個鍵值與字符串的所有字符進行比較。

如果鍵匹配字符串的字符,則打印字符串字符,否則打印星號(*)。事情是這樣的:

if($string[$character] == $array[$key]){ 

echo $string[$character]; 

     } 
     else{ 
       echo "*"; 

          } 
//So in this case, Final Output should be: 
// Final Output = b**c* 

我如何可以接近實現最終輸出

+0

所以你想只替換FIRST匹配一個 *? – 2013-03-09 09:32:33

+0

我想用鍵值替換字符串中每個字符的實例,這就是爲什麼我需要一個可以運行直到每個鍵值都經過字符串的循環。 – Mark 2013-03-09 09:35:01

回答

1

迴路串並使用in_array()

$string = "black"; // a string that has 5 characters 
$array = array(0=>"c", // an array that has two keys "c" and "b" 
       1=>"b"); 

for($i=0; $i<strlen($string); $i++){ 

    if(in_array($string[$i], $array)){ 
     echo $string[$i]; 
    } else { 
     echo '*'; 
    } 

} 

// b**c* 

Codepad Example

+0

@Minhai你真棒!效果很好。 – Mark 2013-03-09 09:46:39

0

我知道我有點晚,但這會做的伎倆太:

$string = "black"; 
$array = array(0=>"c", 
       1=>"b") ; 

echo preg_replace("/[^". implode($array) ."]/", "*", $string); 

輸出:b**c*

+0

而你正在替換已知的字符。這將導致'* la * k' – 2013-03-09 09:37:58

+0

更新我的帖子 – 2013-03-09 10:12:15