разбиение строки на похожие элементы вместе со значениями - PullRequest
0 голосов
/ 02 октября 2019

У меня есть строка наподобие

$query = "date=20.10.2007&amount=400+date=11.02.2008&amount=1400+date=12.03.2008&amount=1500";

есть две переменные с именами дата и сумма, содержащие значение, например, дата = 20.10.2007 и сумма = 400, и эти две переменные повторяются с разными значениями и каждый набор(дата и сумма) разделены знаком «+». Теперь я хочу отобразить эту строку следующим образом:

   Date      Amount
20.10.2007   400
11.02.2008   1400
12.02.2008   1500

Нужна помощь

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

Большое спасибо, Тим Бигелейзен, за ваше любезное руководство. С вашей помощью я сделал это с помощью следующего кода:

$str = "date=20.10.2007&amount=400+date=11.02.2008&amount=1400+date=12.03.2008&amount=1500"; $array = explode("+",$str); 
$i = 0; 
echo nl2br("Date Amount \n"); 
foreach($array as $item[$i]) 
{ 
parse_str($item[$i]); 
echo $date; 
echo $amount."<br>"; 
$i++;
 }
0 голосов
/ 02 октября 2019

Мы можем разумно использовать explode и preg_split здесь, чтобы получить желаемый результат:

$query = "date=20.10.2007&amount=400+date=11.02.2008&amount=1400+date=12.03.2008&amount=1500";
$array = explode("+", $query);  

$counter = 0;
echo "Date         Amount\n";
foreach($array as $item) {
    if ($counter > 0) echo "\n";
    $parts = explode("&", $item);
    echo preg_split("/=/", $parts[0])[1] . "   ";
    echo preg_split("/=/", $parts[1])[1];
    $counter = $counter + 1;
}

Это печатает:

Date         Amount
20.10.2007   400
11.02.2008   1400
12.03.2008   1500

Логика здесь в том, чтосначала мы разбиваем строку запроса на +, чтобы получить компоненты, похожие на:

date=20.10.2007&amount=400

Затем, внутри цикла по всем таким компонентам, мы снова разделяем на &, чтобы получить date и amount условия. Наконец, каждый из них снова делится на =, чтобы получить действительные значения.

...