Parse php array возвращает только первый символ [duplicate]

Если вы хотите быстро сканировать вход, не запутавшись в методе nextLine () класса Scanner, используйте для этого специальный пользовательский сканер ввода.

Код:

class ScanReader { /** * @author Nikunj Khokhar */ private byte[] buf = new byte[4 * 1024]; private int index; private BufferedInputStream in; private int total; public ScanReader(InputStream inputStream) { in = new BufferedInputStream(inputStream); } private int scan() throws IOException { if (index >= total) { index = 0; total = in.read(buf); if (total <= 0) return -1; } return buf[index++]; } public char scanChar(){ int c=scan(); while (isWhiteSpace(c))c=scan(); return (char)c; } public int scanInt() throws IOException { int integer = 0; int n = scan(); while (isWhiteSpace(n)) n = scan(); int neg = 1; if (n == '-') { neg = -1; n = scan(); } while (!isWhiteSpace(n)) { if (n >= '0' && n <= '9') { integer *= 10; integer += n - '0'; n = scan(); } } return neg * integer; } public String scanString() throws IOException { int c = scan(); while (isWhiteSpace(c)) c = scan(); StringBuilder res = new StringBuilder(); do { res.appendCodePoint(c); c = scan(); } while (!isWhiteSpace(c)); return res.toString(); } private boolean isWhiteSpace(int n) { if (n == ' ' || n == '\n' || n == '\r' || n == '\t' || n == -1) return true; else return false; } public long scanLong() throws IOException { long integer = 0; int n = scan(); while (isWhiteSpace(n)) n = scan(); int neg = 1; if (n == '-') { neg = -1; n = scan(); } while (!isWhiteSpace(n)) { if (n >= '0' && n <= '9') { integer *= 10; integer += n - '0'; n = scan(); } } return neg * integer; } public void scanLong(long[] A) throws IOException { for (int i = 0; i < A.length; i++) A[i] = scanLong(); } public void scanInt(int[] A) throws IOException { for (int i = 0; i < A.length; i++) A[i] = scanInt(); } public double scanDouble() throws IOException { int c = scan(); while (isWhiteSpace(c)) c = scan(); int sgn = 1; if (c == '-') { sgn = -1; c = scan(); } double res = 0; while (!isWhiteSpace(c) && c != '.') { if (c == 'e' || c == 'E') { return res * Math.pow(10, scanInt()); } res *= 10; res += c - '0'; c = scan(); } if (c == '.') { c = scan(); double m = 1; while (!isWhiteSpace(c)) { if (c == 'e' || c == 'E') { return res * Math.pow(10, scanInt()); } m /= 10; res += (c - '0') * m; c = scan(); } } return res * sgn; } }

Преимущества:

Сканирование ввода быстрее, чем BufferReader Уменьшает сложность времени Сбрасывает буфер для каждого следующего ввода

Методы :

Сканирование Вход быстрее, чем BufferReader scanInt () - проверка Целочисленное значение Уменьшает сложность времени scanString () - сканирование Строковое значение Сбрасывает буфер для каждый следующий вход scanInt (int [] array) - сканирует полный массив (Integer) scanLong (long [] array) - сканирует полный массив (длинный)

Использование:

Скопируйте данный код под кодом Java. Инициализировать объект для данного класса

ScanReader sc = new ScanReader(System.in); 3. Импортировать необходимые классы:

import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; 4. Выбросить IOException из вашего основного метода для обработки исключения 5. Использовать предоставленные методы. 6. Наслаждайтесь

Пример:

import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; class Main{ public static void main(String... as) throws IOException{ ScanReader sc = new ScanReader(System.in); int a=sc.scanInt(); System.out.println(a); } } class ScanReader....
44
задан Muhamad Yulianto 6 June 2015 в 10:11
поделиться

4 ответа

69
ответ дан Community 3 September 2018 в 14:47
поделиться

Если ваш выход из print_r($var), например:

    Array ( [demo] => Array ( [0] => 10499478683521864 [1] => 07/22/1983 [2] => email@saya.com ) )

, выполните $var['demo'][0]

Если выход из print_r($var), например:

    Array ( [0] => 10499478683521864 [1] => 07/22/1983 [2] => email@saya.com )

, то do $var[0]

2
ответ дан Evans Murithi 3 September 2018 в 14:47
поделиться

вы можете использовать

$ar = (array) $get_user;

, тогда вы можете получить доступ к их индексам:

echo $ar[0];
-1
ответ дан morteza kavakebi 3 September 2018 в 14:47
поделиться

Из вопроса мы не можем видеть структуру входного массива. Это может быть array ('id' => 10499478683521864, 'date' => '07/22/1983'). Поэтому, когда вы запрашиваете $ demo [0], вы используете индекс undefind.

Array_values ​​потеряли ключи и возвратили массив с многочисленными ключами, делающими массив как array(10499478683521864, '07/22/1983'...). Этот результат мы видим в вопросе.

Итак, вы можете взять значения элемента массива таким же образом

echo array_values($get_user)[0]; // 10499478683521864 
7
ответ дан splash58 3 September 2018 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: