Я не могу получить доступ к определенным индексам моего массива php - PullRequest
0 голосов
/ 30 июня 2019

Я не могу получить доступ к определенным индексам моего массива, я хочу получить доступ к третьему индексу массива, который фактически содержит почтовый индекс пользователя, чтобы использовать его в операторе SELECT.Вот массив:

$zip_code = connecting::query('SELECT zipcode FROM accounts WHERE username=:user_name', array(':user_name' => $user_name));
$zipcode = json_encode($zip_code, true);

Вот вывод, когда я печатаю $zipcode:

[{"zipcode":"28262","0":"28262"}]

Но когда я печатаю $ zipcode [2], ничего не печатается, и я не могу его использовать,Я не могу просто получить к нему доступ напрямую, как это?Я использовал json_encode, var_export, implode и т. Д., Чтобы попытаться просто преобразовать его в строку, но он не работает.

Вот метод запроса, который я вызываю:

public static function query($query,$params = array())
{


    $statement = self :: db()->prepare($query);
    $statement->execute($params);
    if(explode(' ',$query)[0] == 'SELECT')
    {
        $data = $statement->fetchAll();
        return $data;
    }

}

1 Ответ

2 голосов
/ 30 июня 2019

fetchAll возвращает массив массивов .Итак, если вы print_r(zip_code); вы увидите что-то вроде:

Array ( 
    [0] => Array ( 
        [zipcode] => 28262 
        [0] => 28262 
    ) 
)

Итак, как вы можете видеть - здесь нет ключа с индексом 2, только 0 во внешнем массиве и два ключа0 и zipcode в подмассиве.

Кроме того, как вы можете видеть, ваши данные (28262) дублируются в подмассиве под разными ключами.Чтобы избежать этого, вы можете предоставить аргумент fetchAll:

$data = $statement->fetchAll(PDO::FETCH_ASSOC);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...