0

我有一组数据,它是国际电话号码前缀的通话费用明细。我需要解析数据,以便知道拨打任何号码的每分钟费用。格式是成本后跟前缀。这是一个大混乱。数据如下所示:cost,prefix,prefix,prefix,cost,prefix,prefix,prefix,prefix

前缀的数量各不相同,但成本始终为 0.something (eg. 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 回答