<code><?php $lang_Log=array( 'rep-cache during mirror is cleard'=>'规则缓冲清除', 'Starting replication'=>'开始规则', 'Wait -> Brk'=>'镜像状态改变,由等待到停止状态', 'OK -> Wait'=>'镜像状态改变,由OK到等待状态', ); $logs = sd_get_log_sys_by_uuid(uuid); for($i=0; $i<$count(logs); $i++) { if($lang_Log[$logs[$i]]){ echo $lang_Log[$logs[$i]]; }else{ foreach ($lang_Log as $k=> $v) { $pos = strpos($logs[$i], $k); if($pos !== false){ echo $v; break; } } } } ?> </code>
我想做的就是遍歷數組查找數組元素是否存在與當前字串,如果不存在就輸出當前字串,如果存在,則輸出數組的鍵值。
就是翻譯功能。
1.判斷日誌在陣列中是否有對應中文(因為日誌有的是死的).
2.判斷日誌部分字串是否有對應的中文(有的日誌是包含了變數的語句,所以需要用部分字串匹配,然後翻譯).
3.因為外層有個logs數組的循環語句,所以用break,不用exit.
<code><?php $lang_Log=array( 'rep-cache during mirror is cleard'=>'规则缓冲清除', 'Starting replication'=>'开始规则', 'Wait -> Brk'=>'镜像状态改变,由等待到停止状态', 'OK -> Wait'=>'镜像状态改变,由OK到等待状态', ); $logs = sd_get_log_sys_by_uuid(uuid); for($i=0; $i<$count(logs); $i++) { if($lang_Log[$logs[$i]]){ echo $lang_Log[$logs[$i]]; }else{ foreach ($lang_Log as $k=> $v) { $pos = strpos($logs[$i], $k); if($pos !== false){ echo $v; break; } } } } ?> </code>
我想做的就是遍歷數組查找數組元素是否存在與當前字串,如果不存在就輸出當前字串,如果存在,則輸出數組的鍵值。
就是翻譯功能。
1.判斷日誌在陣列中是否有對應中文(因為日誌有的是死的).
2.判斷日誌部分字串是否有對應的中文(有的日誌是包含了變數的語句,所以需要用部分字串匹配,然後翻譯).
3.因為外層有個logs數組的循環語句,所以用break,不用exit.
為什麼不離開else
呢?
你循環每一個字,循環第一個是rep-cache during mirror is cleard
,
存在於$s
裡嗎? 不存在
走不走else
? 走
運不運行exit;
? 運行
還繼不繼續執行? 不繼續
後面的字還檢查嗎? 不檢查
<code>foreach ($lang_Log as $k=> $v) { $pos = strpos($s, $k); if($pos !== false){ echo $v; break; } } </code>
$s = "mirror return 0, peer 94, bytes recv [En/De] [2005667596/2005667596 = 100]";
foreach ($lang_Log as $k=> $v) {
<code>$pos = strpos($s, $k); if($pos !== false){ echo 'value = ' . $v . "<br/>; }else{ echo 'key = ' . $k . "<br/>; }</code>
}