Проблема
У меня есть два массива.1 массив содержит слова, другой массив содержит строки.Я написал код, который найдет слово в строке.Если одно из слов найдено в строке.Я возвращаю слово.Но если в строке не найдено ни одного слова из массива, я также хотел бы вернуть одно значение.Я написал несколько кодов, и я всегда получаю одни и те же случаи.
Случаи:
- Я не получил значения, когда не было совпадений
- Я получил значение из результата до
- Iполучил каждое совпадение значений и никакого совпадения назад
Вопрос
Я понял это где-то неправильно.Как я могу сохранить для каждой строки слово, если оно найдено, и если оно не найдено, значение установлено как пропущенное значение?
Код
Вход
$csv_specie = array("Mouse","Human");
$CDNA = 'Human interleukin 2 (IL2)a;Ampicillin resistance gene (amp)a;Mouse amp gene';
# Split string by ; symbol into an array
$CDNA_new = preg_split("/\b;\b/", $CDNA);
Выход (Я хотел бы закончить чем-то вроде этого
foreach ($CDNA_new as $string){
$specie = $result ## Human
echo $specie."-"$sring. "<br \>\n";
}
Результат в веб-браузере:
Человек-человеческий интерлейкин 2 (IL2) a
Ген устойчивости к NA-ампициллину (amp) a
Mouse-Mouse amp gen
Первая попытка
# Go through the string
foreach($CDNA_new as $t){
# Go through the specie array
foreach ($csv_specie as $c){
# Find specie in string
if (strpos($t, $c) !== FALSE ){
$match = $c;
$specie = $c;
}
}
# If no match found set values to missing values
if (isset($specie) !== TRUE){
$match = "NA";
$specie = "NA";
}
echo "----------------------". "<br \>\n";
echo '+'.$specie. "<br \>\n";
echo '+'.$match. "<br \>\n";
echo '+'.$t. "<br \>\n";
# Work further with the values to retrieve gene ID using eSearch
}
Вторая попытка
# use function to find match
function existor_not($str, $character) {
if (strpos($str, $character) !== false) {
return $character;
}
return $character = "0";
}
foreach ( $CDNA_new as $string ){
foreach ( $csv_specie as $keyword ){
$test = existor_not($string,$keyword);
}
echo "-".$test."|" . $string. "<br \>\n";
# Work further with the values to retrieve gene ID using eSearch
}
Третья попытка
foreach ( $CDNA_new as $string ){
foreach ( $csv_specie as $keyword ){
$result = stripos($string, $keyword);
if ($result === false) {
$specie = "NA";
}
else {
$specie = $keyword;
}
}
if ($specie !== "NA"){
echo "match found";
}else{
$match = "NA";
$specie = "NA";
}
echo $specie. "<br \>\n";
# Work further with the values to retrieve gene ID using eSearch
}