Я анализирую код другого пользователя, который обнаружил при отладке типа и значений переменной класса во время выполнения:
echo print_r($this->_out);
Array
(
[id] => -1
[fieldErrors] => Array
(
)
[error] =>
[data] => Array
(
)
[row] => Array
(
[DT_RowId] => row_177
[id] => 177
[last_name] => sdfdsf
[first_name] => dsf
[homeaddr] => sdfdsfsdfdsfdsfdsfdsf
[email] => [email protected]
[officeaddr] => wwwwwwwwwwwwwwwwwwwwwwww
[mobile] => 11111111
[age] => 11
[chargeamt] => 11
[start_date] => 11/11/2011
)
)
1{"row":{"DT_RowId":"row_177","id":"177","last_name":"sdfdsf","first_name":"dsf","homeaddr":"sdfdsfsdfdsfdsfdsfdsf","email":"[email protected]","officeaddr":"wwwwwwwwwwwwwwwwwwwwwwww","mobile":"11111111","age":"11","chargeamt":"11","start_date":"11\/11\/2011"}}
Я новичок в PHP и хотел бы знать, как я могу получить доступ к [id] => 177, то есть значение 177.
Я много раз пробовал
$this->_out['row']['id'][0]
Это дало мне результат ниже:
1{"row":{"DT_RowId":"row_177","id":"177","last_name":"sssss","first_name":"ss","homeaddr":"sssssssssssssssssssss","email":"[email protected]","officeaddr":"sssssssssssssssssssssssssssss","mobile":"11111111","age":"11","chargeamt":"11","start_date":"01\/01\/2001"}}
в то время как
Я много раз пробовал
$this->_out['row']['id']
Это дало мне результат ниже:
177{"row":{"DT_RowId":"row_177","id":"177","last_name":"sssss","first_name":"ss","homeaddr":"sssssssssssssssssssss","email":"[email protected]","officeaddr":"sssssssssssssssssssssssssssss","mobile":"11111111","age":"11","chargeamt":"11","start_date":"01\/01\/2001"}}
и другие, но это просто не дает мне ожидаемого.
Как я могу получить доступ к значению по желанию?
Вы делаете все правильно. $this->_out['row']['id']
вернет желаемый результат (проверьте, почему вы получаете также строку JSON, которая не является частью print_t($this->_out)
.
Это вернет результат 177
:
$this->_out['row']['id'];
И поскольку в PHP вы можете получить доступ к строковым символам в виде массива, это вернет первый символ в строке (то есть 1
):
$this->_out['row']['id'][0];
И это вызовет ошибку, поскольку такой индекс отсутствует (длина строки равна 3, поэтому последний индекс равен 2):
$this->_out['row']['id'][5];
Результат print_r представляет собой массив с большим количеством массивов. Поэтому, прежде всего, вы должны найти индекс основного массива, индекс которого представляет собой подматрицу со значением, которое вы ищете. И тогда вы должны использовать этот индекс для доступа к значениям вспомогательного массива.
$this->_out['row']['id']
выглядит так, как будто он выводит правильное значение177
- вы уверены, что не используете какой-то другой вывод непосредственно после его использования?$this->_out['row']['id']
возвращает вам результат этого.