@del993788

Как изменить json в вид array?

Здравствуйте. Есть вот такой скрипт:
$start = "2016-11-29";
$end = "2016-12-31";
$nnomer = "lux";

const SQL_GET_MENU_NOMERPRICE = '
SELECT `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12` FROM nomerprice WHERE name = :name
';

$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare(SQL_GET_MENU_NOMERPRICE);
$res = $stmt->execute([':name' => $nnomer]);
$nprice = json_encode(array_pop($stmt->fetchAll(PDO::FETCH_OBJ)), JSON_NUMERIC_CHECK);
// $nprice сейчас равен {"1":1500,"2":1000,"3":2000,"4":1000,"5":1500,"6":2000,"7":1500,"8":2000,"9":1500,"10":3000,"11":2000,"12":1500}

if (!empty($start) && !empty($end)) {
    $startDate = new DateTime($start);
    $endDate = new DateTime($end);
    $dates = array($startDate, $endDate);
 
    $pricesPerMonth = array(
        1 => 1500, 2 => 2000, 3 => 1500, 4 => 2000, 5 => 1500,
        6 => 2000, 7 => 1500, 8 => 2000, 9 => 1500, 10 => 2000,
        11 => 1500, 12 => 2000
    );

    $price = 0;
    for ($i = $startDate->getTimestamp(); $i <= $endDate->getTimestamp(); $i += 86400) {
        $newDate = new DateTime();
        $newDate->setTimestamp($i);
        $m = $newDate->format('m');
        $m = intval($m);
        if ($pricesPerMonth[$m]) {
            $price += $pricesPerMonth[$m];
        }
    }
    var_dump($price);
}


Как подставить под $pricesPerMonth значение $nprice, чтобы всё работало? Я игрался с json_encode и json_decode, но у меня ничего не вышло.
  • Вопрос задан
  • 277 просмотров
Решения вопроса 1
Это:
$nprice = json_encode(array_pop($stmt->fetchAll(PDO::FETCH_OBJ)), JSON_NUMERIC_CHECK);
выброси и замени на
$pricesPerMonth = array_pop($stmt->fetchAll(PDO::FETCH_OBJ));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы