Я хочу преобразовать строку, например, 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; }
Используйте 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');
return array_map('intval', explode(",", '1,2,3,4,5,6,7,8,9'));
explode(",",'1,2,3,4,5,6,7,8,9');
Вышеуказанные ответы могут потенциально возвращать нечисловые значения
Оба возвращают массивы, которые испорчены нечисловыми значениями.
$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) "" } */
$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) } } */
Вы можете использовать http://pl.php.net/manual/en/function.explode.php