2015-08-28 4 views
-2

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

мне нужно использовать арифметические операции внутри всех случаев и в финале, чтобы показать последний результат.

functions.php

<?php 
static $overall; 

$overall = 0; 

$action = $_GET['action']; 

switch ($action) { 

case 'result1': 

$overall = $overall + 5; 

break; 

case 'result2': 

$overall = $overall + 15; 

break; 

case 'result3': 

$overall = $overall + 2; 

break; 

case 'finalresult': 

echo $overall; 

break; 

} 
?> 

Я звоню все случаи через AJAX и в финале я хочу назвать «finalresult» случай.

+2

Так в чем же проблема? – Mureinik

+0

Вы говорите, что вышеуказанный код не работает? –

+0

Ну, это не совсем так ... вы, наверное, путаете 'static' с' persistent'? –

ответ

0

Когда вы отмечаете переменную Статическом, что вы делаете, что делает его доступным из-за пределов класса без конкретизации класса. Например:

class Test { 

static $someVariable = 0; 

} 

Теперь вы можете вызвать эту переменную следующим образом:

echo Test::$someVariable; 

Если вы сделали экземпляр класса и приращение переменной, а затем называется переменной на оригинальном классе, это было бы остаются 0. Как это:

$instance = new Test(); 
$instance->someVariable++; 

// This is now 1 
echo $instance->someVariable; 

// This remains 0 
echo Test::$someVariable; 

Если вы имели другую переменную, которая не была помечена статичны, вы не могли бы назвать это из-за пределов класса без конкретизации. Например:

class Test { 

public $differentVariable = 3; 

} 

echo Test::$differentVariable; 

Это не работает и дает ошибку.

Путаница здесь в том, как использовать статические и как сделать данные в вашей программе сохранены.

Поскольку вы используете это на веб-сайте, где вы загружаете этот сценарий с другой страницы, каждый раз, когда он называется его запуском, а $ total сбрасывается на 0. Если вы хотите, чтобы это число увеличивалось и сохранялось (сохраняйте его значение даже после того, как пользователь вернется на другую страницу), у вас есть несколько хороших вариантов. Вы можете узнать и использовать $ _SESSION. (поместите session_start(), на каждой странице PHP вы хотите иметь переменную $ _SESSION, а затем сохранить в ней информацию, как и любой другой ассоциативный массив).

Вы также можете узнать, как использовать mysqli или какой-либо другой интерфейс базы данных , Все это зависит от вашего общего дизайна программы, поскольку информация о базе данных будет сохраняться постоянно или до сброса вручную, а данные $ _SESSION будут работать только до тех пор, пока файл cookie существует в браузере пользователя.

Надеюсь, что это поможет!

+0

Большое спасибо за ваше время, я попытаюсь посмотреть, смогу ли я найти решение с $ _SESSION. Надеюсь, я заработаю. –

+0

Попробуйте в верхней части этого файла поставить: 'session_start();' а затем вместо '$ general' используйте' $ _SESSION ['total']; 'и увеличивайте это значение. Однако здесь есть и другие проблемы с дизайном. Например, когда вы хотите, чтобы это было сброшено на 0, если вообще? Поэтому посмотрите в $ _SESSION и подумайте о том, как вам нужно, чтобы ваша программа функционировала. –

+0

Я не хочу, чтобы сбросить до 0, просто приращение в каждом случае. –

-1

, что об этом

 <?php 

     static $overall; 

    $overall = 0; 

    $action = overallResult($_GET['action']); 

    echo $action; 

    public function overallResult($action) 

    { 

    switch ($action) 

    { 

    $overall = 0; 

    case 'result1': 

    $overall = $overall + 5; 

    break; 

    case 'result2': 

$overall = $overall + 15; 

break; 

case 'result3': 

$overall = $overall + 2; 

break; 

case 'finalresult': 
$overall = $overall; 
break; 

} 
return $overall ; 
    } 

    ?> 
+0

Не работает, извините. –

+0

r u используя php5? –

+0

Да, я использую PHP5. –

Смежные вопросы