darkleviathan
@darkleviathan

Как вывести все значения строки, если изначально не знаешь сколько их будет?

Написал вот такой код:

$massive="1H|\^&|||ttt|||||h|BATCH|P|1 P|1 O|1|5331|598^0012^1^^S1^SC|^^^133^1\^^^140^1|R||20190625132832||||N||||1|||||||20190625135509|||F R|1|^^^133/1/not|1.52|uIU/ml||N||F||admin|||E1 R|2|^^^140/1/not|4.99|pmol/l||N||F||admin|||E00 21 L|1|N 43";

$b=explode('^^^',$massive);
$result1=explode('|',$b[3]);
$result2=explode('|',$b[4]);
print "<div>$result1[1]<br>$result2[1]</div>";


Мне важно получить из строки значения что 133 будет соответствовать 1.52, а 140 - 4.99
что то типа
<tr><td>133</td><td>1.52</td></tr>
<tr><td>140</td><td>4.99</td></tr>


При этом я не понимаю как учесть что переменная $massive может содержать не 2 соответствия а например 1 или 3 или больше.

например так:

$massive="1H|\^&|||ttt|||||h|BATCH|P|1 P|1 O|1|5523|606^0015^5^^S1^SC|^^^133^1\^^^137^1\^^^136^1\^^^140^1|R||20190625154214||||N||||1|||||||20190625161552|||F R|1|^^^133/1/not|2.81|uIU/ml||N||F||admin|||E1 R|2|^^^137/1/not|0.377|69 2ng/ml||N||F||admin|||E1 R|3|^^^136/1/not|1.43|ng/ml||N||F||admin|||E1 R|4|^^^140/1/not|4.73|pmol/l||N||F||admin|||E1 L|1|N 26";
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
$massive = "1H|\^&|||ttt|||||h|BATCH|P|1 P|1 O|1|5331|598^0012^1^^S1^SC|^^^133^1\^^^140^1|R||20190625132832||||N||||1|||||||20190625135509|||F R|1|^^^133/1/not|1.52|uIU/ml||N||F||admin|||E1 R|2|^^^140/1/not|4.99|pmol/l||N||F||admin|||E00 21 L|1|N 43";

// Ищем все числа из трех цифр, перед которыми стоит ^^^ 
// и результат записываем в matches
preg_match_all('~\^{3}(?P<target>\d{3})~', $massive, $matches);

// В массиве matches c индексом 'target' лежат наши значения
//  [
//     0 => "133"
//     1 => "140"
//     2 => "133"
//     3 => "140"
//  ]
var_dump($matches['target']);

https://ideone.com/e6U7yB

Далее циклом пройдитесь по этим значениям, например отфильтруйте их, очистите от дублей, и сопоставьте со своим словарем и выводите в html уже.
И все это динамически, то есть не завязано на порядок этих символов
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы