Это присоединение php строки сводит меня с ума! - PullRequest
0 голосов
/ 13 ноября 2010

Я хочу добавить "0" перед $ _POST

$currency = $_POST['Currency']; // lets say 900
$currency = "0".$currency;
echo $currency;

Он должен был вернуть 0900, но вернул 900.

Есть идеи?

EDIT

Это полная функция

function validate(){

        $ref = $this->input->post('Ref');
        $shop = $this->input->post('Shop');
        $amount = $this->input->post('Amount')*1000;
        //$currency = $this->input->post('Currency');
            //$currency = $_POST['Currency']; // lets say 900
            //$currency = "0".$currency;
        $currency = str_pad($_POST['Currency'],4,'0',STR_PAD_LEFT);

        $query = $this->db->query("SELECT * FROM shop_validation WHERE merchant_ref = '$ref' ");
        if($query->num_rows() > 0) {

            $row = $query->row_array();

            $posts = "";

            foreach ($_POST as $name => $value) {
                $posts .= $name." / ".$value;
            }

            $this->db->query("INSERT INTO transactions (shop,amount,currency,posts) VALUES ('$shop','$amount','$currency','$posts')");


            if($row['merchant_ref'] != $ref)
            {
                echo "[NOTOK]";
                return;
            }

            if($row['merchant_id'] != $shop)
            {
                echo "[NOTOK]";
                return;
            }

            if(trim($row['amount']) != $amount)
            {
                echo "[NOTOK]";
                return;
            }

            if($row['currency_code'] != $currency)
            {
                echo "[NOTOK]";
                return;
            }

            echo "[OK]";

        }


    }

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

Этот скрипт выполняется на платформе Codeigniter

Ответы [ 3 ]

6 голосов
/ 13 ноября 2010

Если вы хотите, чтобы входные данные имели заданное количество цифр с ведущими нулями, я некоторое время назад написал совет, который делает именно это:

<?php
$variable =  sprintf("%04d",$_POST['Currency']);
?>

Это будет отображать начальные нули, пока $variable не станет длиной 4 символа. Вот несколько примеров:

Если $_POST['Currency'] имеет значение «3» будет повторять «0003»

Если $_POST['Currency'] имеет значение «103» будет повторять «0103»

Если $_POST['Currency'] имеет значение «3103» будет повторять «3103»

Что хорошо, даже если количество символов превышает 4 (в вашем случае), поскольку оно просто игнорирует функцию и не добавляет ничего перед ней. Надеюсь, это помогло:)

1 голос
/ 13 ноября 2010

Возможно, вы захотите использовать такую ​​функцию PHP str_pad()

$currency = str_pad($_POST['currency'],4,'0',STR_PAD_LEFT)

Подробнее см. php manual

0 голосов
/ 13 ноября 2010

Ваша проблема - автоматическое приведение, где переменная может быть строкой или числовым значением, а php угадывает, какое из них вы не можете. Ваша валютная переменная используется в качестве строки, когда вы связываете строку с ней с помощью оператора точки, но затем, когда вы выводите ее, она предполагает, что она является целым числом, и выдает вам целочисленное значение. Вы можете echo (string)$currency или использовать функцию str_pad() или printf(), чтобы получить более полезные выходные значения.

РЕДАКТИРОВАТЬ: Код в вопросе на самом деле работает, как и ожидалось для меня. Вы должны упростить пример, и ваша фактическая функция вывода отличается от того, что вы здесь представляете, потому что в этом коде функция автоматической типизации работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...