将数组结果转换为整数以进行计算

时间:2015-01-17 18:05:44

标签: php

我对数组有点问题。 我有一个看起来像这样的数组:

Array
(

    [start] => Array
        (
            [0] => 15168
        )

    [ende] => Array
        (
            [0] => 43
        )

    [string] => Array
        (
            [0] => 1050
        )

)

我需要的数字是1050.所以我这样得到:

$number = $tabelle['string'][0];

现在我的问题是我无法在计算中使用它。我已经尝试将其转换为具有以下行的整数:

$number = intval($tabelle['string'][0]);

但这不起作用。对于$ number,我总是得到0。怎么做得好?我已经在Google上搜索了大约2个小时。

祝你好运

我的整个剧本:

 <?php

class data_pars {

    var $datei;
    var $read_laenge = 2000;
    var $result;


    function set_datei($datei) {

        $this->datei = $datei;
    }

    function read($start,$ende) {

        $file = @fopen ($this->datei,"r");

        while (!feof($file)) {

            $inhalt .= fgets($file,$this->read_laenge);
        }

        if(!$start) $start = 0;
        if(!$ende) $ende = strlen($inhalt);

        if($ende > strlen($inhalt)) $ende = strlen($inhalt);

        $this->result = substr($inhalt,$start,$ende);

    }

    function get_result() {

        return $this->result;
    }

    function get_in_out($in,$out,$in_out) {

    $anzahl_ende = strlen($out);
    $anzahl_start = strlen($in);
    $start = 0; 
    $anzahl = substr_count($this->result, $in);
    $count = 0;

    if(!$in_out) {

        $ad_start = $anzahl_start;
        $ad_ende = $anzahl_ende;
    }

    while($count < $anzahl) {

        $ar_start = strpos($this->result, $in, $start);
        $ar_ende = strpos($this->result, $out, $ar_start + $anzahl_start);
        $ar_string = substr($this->result,$ar_start + $ad_start, $ar_ende - $ar_start + $anzahl_ende - $ad_ende - $ad_start);

        $output[start][] = $ar_start;
        $output[ende][] = $ar_ende - $ar_start + $anzahl_ende;
        $output[string][] = trim($ar_string);

        $start = $ar_start + $anzahl_start;

        $count++;

    }    


    return $output;

    }    


}



$data = new data_pars();

$data->set_datei('http://www.elitepvpers.com/theblackmarket/profile/6005376');
$data->read('0','20000');

$tabelle = $data->get_in_out('<td>elite*gold:</td>','</td>',false);
$number = intval($tabelle['string'][0]);
echo '<pre>';
print_r($tabelle);
echo '</pre>';
echo $number;
?> 

所以我总是得到$为$ number而不是1050;

2 个答案:

答案 0 :(得分:1)

你做了2个主要错误:

1。您必须在while循环之前初始化$inhalt,如下所示:

$inhalt = "";
while (!feof($file)) {
    $inhalt .= fgets($file,$this->read_laenge);
}

2。你忘了在索引周围加上引号:

$output["start"][] = $ar_start;
$output["ende"][] = $ar_ende - $ar_start + $anzahl_ende;
$output["string"][] = trim($ar_string);

现在为什么你的intval()失败了?因为如果右键单击并显示源代码,您将在数组中看到值为:

<td>1050

所以这不能转换为int!而<td>你看不到,因为它是一个html标签

现在,您只需使用以下行轻松提取数字:

$tabelle["string"]["0"] = filter_var($tabelle["string"]["0"], FILTER_SANITIZE_NUMBER_INT);
echo $number = intval($tabelle["string"]["0"]);

输出:

1050

答案 1 :(得分:0)

如果我正确理解您的代码和逻辑。 尝试替换:

$output[start][] = $ar_start;
        $output[ende][] = $ar_ende - $ar_start + $anzahl_ende;
        $output[string][] = trim($ar_string);

到此: $

output['start'][] = intval($ar_start);
        $output['ende'][] =intval( $ar_ende - $ar_start + $anzahl_ende);
        $output['string'][] = intval(trim($ar_string));