php - 如何根据十进制值将数字数据字符串排序到数组中?

时间:2013-01-09 15:01:57

标签: php

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

前缀的数量各不相同,但成本始终为0.something(例如。0.345

示例:

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

我需要重新格式化数据,以便以编程方式获取调用任何前缀的成本,因此我知道调用前缀123的成本为0.43美元,调用567成本为0.64美元等。例如,也许我可以查找所需的前缀并找到它之前的成本。

有人可以帮忙吗?感谢

2 个答案:

答案 0 :(得分: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
)

答案 1 :(得分: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
)

但后来接受的答案已经做了相同的