0

国際電話番号プレフィックスの通話料金の内訳である一連のデータがあります。データを解析して、任意の番号に電話をかける1分あたりのコストを把握する必要があります。形式は、コストとそれに続くプレフィックスです。それは一つの大きな混乱です。データは次のようになりますcost,prefix,prefix,prefix,cost,prefix,prefix,prefix,prefix

プレフィックスの数はさまざまですが、コストは常に0です0.345

例:

0.43,123,124,125,0.64,567,568,569

プログラムでプレフィックスを呼び出すコストを取得できるようにデータを再フォーマットする必要があるため、プレフィックス123の呼び出しには0.43ドル、567の呼び出しには0.64ドルなどが必要です。たとえば、目的のプレフィックスを検索して、それに先行するコスト。

誰か助けてもらえますか?ありがとう

4

2 に答える 2

1

次のように、文字列を使用explode()してデータを再フォーマットし、データを繰り返し処理してコストを見つけることができます。

$string = '0.43,123,124,125,0.64,567,568,569';
$costs = array(); $current_price = null;
foreach( explode( ',', $string) as $value) {
    if( $value < 1) {
        $current_price = $value;
    } else {
        $costs[ $value ] = $current_price;
    }
}

これで、キーがプレフィックスであるルックアップテーブルができました。次のように、プレフィックスのインデックスにアクセスしてコストを検索できます。

echo "It costs " . $costs[ 125 ] . " to call prefix 125";

実際、$costs配列は次のようになります。

Array
(
    [123] => 0.43
    [124] => 0.43
    [125] => 0.43
    [567] => 0.64
    [568] => 0.64
    [569] => 0.64
)
于 2013-01-09T15:09:42.387 に答える
0

使用できるサンプルコードは次のとおりです。

    <?php

$string = "0.43,123,124,125,0.64,567,568,569";

$arr = explode (',',$string);

$callrates =[];
$rate;
foreach($arr as $key=>$value){
    if(strstr($value,'.')){
        $rate = $value;
    }else{
        $callrates[$value]  = $rate;
    }
}

テストprint_r($callrates);は生成します

Array
(
    [123] => 0.43
    [124] => 0.43
    [125] => 0.43
    [567] => 0.64
    [568] => 0.64
    [569] => 0.64
)

しかし、受け入れられた答えはすでに同じことをします

于 2013-01-09T15:16:01.073 に答える