Строка для массива целых php - PullRequest
7 голосов
/ 22 января 2012

Я хочу преобразовать строку, например, 1,2,3,4,5,6, в массив целых чисел в php? Я нахожу функции, которые имеют доступ только к первому символу строки, например, 1. Как я могу связать всю строку в массив?

function read_id_txt()
{

        $handle_file = fopen("temporalfile.txt", 'r'); 

        $i=0;

        while ($array_var[$i] = fgets($handle_file, 4096)) { 
            echo "<br>";
            print_r($array_var[i]);
            $i++;
        }

        fclose($handle_file);   

        $temp=explode(" ", $array_var[0]);      

        return $temp;   


}

Ответы [ 5 ]

24 голосов
/ 22 января 2012

Использовать PHP взорваться .

$str = "1,2,3,4,5,6";
$arr = explode("," $str); // array( '1', '2', '3', '4', '5', '6' );

foreach ($arr AS $index => $value)
    $arr[$index] = (int)$value; 

// casts each value to integer type -- array( 1, 2, 3, 4, 5, 6 );

Как предложено Тимом Купером , использование array_walk проще, чем вышеуказанный цикл:

array_walk($arr, 'intval');
9 голосов
/ 11 июля 2013
return array_map('intval', explode(",", '1,2,3,4,5,6,7,8,9'));
3 голосов
/ 04 мая 2015

Приведенные выше ответы могут потенциально возвращать нечисловые значения

array_walk & array_map с intval

Оба возвращаемых массива испорчены нечисловыми значениями.

$string = ',g,6,4,3,f,32,a,';
$array = explode(',', $string);
array_walk($array, 'intval');
$arrayMap = array_map('intval', $array);
var_dump($array);
var_dump($arrayMap);
/*
     array(9) {
      [0]=>
      string(0) ""
      [1]=>
      string(1) "g"
      [2]=>
      string(1) "6"
      [3]=>
      string(1) "4"
      [4]=>
      string(1) "3"
      [5]=>
      string(1) "f"
      [6]=>
      string(2) "32"
      [7]=>
      string(1) "a"
      [8]=>
      string(0) ""
    }
 */

array_filter для возврата только числовых значений

$string = ',g,6,4,3,f,32,a,';
$array = explode(',', $string);
$numericOnlyArray = array_filter($array,'is_numeric');

var_dump($numericOnlyArray);

/*
    result:
    array(4) {
      [2]=>
      string(1) "6"
      [3]=>
      string(1) "4"
      [4]=>
      string(1) "3"
      [6]=>
      string(2) "32"
    }
*/

Чтобы получить только целые числа

$string = ',g,6,4,3,f,32,a,';
$array = explode(',', $string);
$result = array_map('intval', array_filter($array, 'is_numeric'));

var_dump($result);

/*
    result:
    array(4) {
      [2]=>
      int(6)
      [3]=>
      int(4)
      [4]=>
      int(3)
      [6]=>
      int(32)
    }
    }
*/
3 голосов
/ 22 января 2012
explode(",",'1,2,3,4,5,6,7,8,9');

http://www.php.net/manual/en/function.explode.php

0 голосов
/ 22 января 2012

Вы можете использовать http://pl.php.net/manual/en/function.explode.php

...