Извлечение определенной части строки

У меня есть эта строка:

[25-03-15, 1236], [26-03-15, 3000], [27-03-15, 3054], [30-03-15, 4000]

Я хочу получить две части из этого, как показано ниже:

['25-03-15','26-03-15','27-03-15','30-03-2015']

а также

[1236,3000,3054,4000]

Пожалуйста, объясните мне, как я могу выполнить эту задачу.

PS: я работаю над просмотром страницы codeigniter.

Я получаю первое, что:

<?php
$usd=$this->db->query('select transaction_date, SUM(amount) as total
from transactions GROUP BY transaction_date')->result_array();
$str = '';

for($i=0; $i<count($usd); $i++){
if($i!=0){
$str = $str.', ['.date('d-m-y', strtotime($usd[$i]["transaction_date"])).', '.$usd[$i]["total"].']';
}else{
$str = $str.'['.date('d-m-y', strtotime($usd[$i]["transaction_date"])).', '.$usd[$i]["total"].']';
}
}

echo $str;

?>

0

Решение

Попробуй это..

  $date = '';
$total = '';
for($i=0; $i<count($usd); $i++){
if($i!=0){
$date .= date('d-m-y', strtotime($usd[$i]["transaction_date"])).', ';
$total .= $usd[$i]["total"].', ';

}else{
$date .= date('d-m-y', strtotime($usd[$i]["transaction_date"])).', ';
$total .= $usd[$i]["total"].', ';
}
}

echo $finaldate='['. $date.']';
echo $finaltotal='['. $total.']';
1

Другие решения

Я не вижу причин, по которым вам нужно сохранять эти данные из вашей базы данных в строку. Просто сохраните его в массиве, и это так просто:

Итак, здесь я сохраняю ваши данные в массиве, чтобы вы получили следующую структуру:

array(
array(25-03-15, 1236),
array(26-03-15, 3000),
array(27-03-15, 3054),
array(30-03-15, 4000)
)

Вы можете просто использовать array_column() чтобы извлечь отдельные столбцы, как это:

<?php

$usd = $this->db->query('select transaction_date, SUM(amount) as total
from transactions GROUP BY transaction_date')->result_array();

foreach($usd as $k => $v)
$result[] = [date('d-m-y', strtotime($usd[$k]["transaction_date"])), $usd[$k]["total"]];$partOne = array_column($result, 0);
$partTwo = array_column($result, 1);

?>

Также, если вам нужны эти данные в строке, как вы сказали в Комментарии Вы можете просто преобразовать это:

Я передам эти извлеченные данные на график, который принимает такие данные — Шахид Рафик 6 минут назад

Просто используйте это:

echo $str = "[" . implode("],[", array_map(function($v){
return implode(",", $v);
}, $usd)) . "]";

выход:

[25-03-15, 1236], [26-03-15, 3000], [27-03-15, 3054], [30-03-15, 4000]

РЕДАКТИРОВАТЬ:

Если вам также нужны части в виде строки, просто сделайте это:

$partOne = "[" . implode("],[", array_column($arr, 0)) . "]";
$partTwo = "[" . implode("],[", array_column($arr, 1)) . "]";

выход:

[25-03-15],[26-03-15],[27-03-15],[30-03-15]
[1236],[3000],[3054],[4000]
1

По вопросам рекламы [email protected]