За последние 24 часа нас посетил 17621 программист и 1671 робот. Сейчас ищут 1466 программистов ...

Вывод значения из ассоциативного массива

Тема в разделе "Сделайте за меня", создана пользователем Notum, 14 апр 2015.

  1. Notum

    Notum Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    8
    Симпатии:
    0
    Ребята, привет.

    Имеется следующий просенький код:
    Код (Text):
    1. <?php
    2.  
    3. $account = array(
    4.     'juno_okyo',
    5.     'user1',
    6.     'user2',
    7. );
    8.  
    9. if (isset($_GET['key']) && $_GET['key'] != '') {
    10.     if (in_array($_GET['key'], $account)) {
    11.         echo 'ok';
    12.     } else {
    13.         echo 'error';
    14.     }
    15. }
    16. exit;
    17.  
    18. ?>
    Пытаюсь сделать, что бы вместо одномерного массива, был ассоциативный массив типа "ключ => значение" и при вводе GET (ключ) выводилось вместо
    Код (Text):
    1. echo 'ok';
    - значение. Спасибо.
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    У вас уже ассоциативный массив же.
    замените на
     
  3. Notum

    Notum Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    8
    Симпатии:
    0
    Извините, я наверное не правильно выразился или написал не совсем верный код:

    Код (Text):
    1. <?php
    2.  
    3. $account = array(
    4.     "foo" => "bar",
    5.     "bar" => "foo",
    6. );
    7.  
    8. if (isset($_GET['key']) && $_GET['key'] != '') {
    9.     if (in_array($_GET['key'], $account)) {
    10.         echo $_GET['key'];
    11.     } else {
    12.         echo 'error';
    13.     }
    14. }
    15. exit;
    16.  
    17. ?>
    В данном примере при вводе foo - возвращает - foo, а мне надобно - bar. Foo - в данном случае - ключ.
     
  4. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Ну, а входные данные какие? Что вы гетом передаёте? Что хранит в себе $_GET['key']?

    Добавлено спустя 2 минуты 26 секунд:
    извините. затупил. вы же написали всё.

    Добавлено спустя 2 минуты 59 секунд:
    Заметьте, вы гетом передаёте значение foo. Т.е. в $_GET['key'] у вас foo. Затем вы это значение ищете в массиве. и если находите - ВЫВОДИТЕ ЕГО ЖЕ. Так почему у вас каким-то чудным образом должно вывести bar?
     
  5. Notum

    Notum Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    8
    Симпатии:
    0
    Получается при помощи php и простого GET невозможно реализовать задуманное?

    Разобрав пример на одном из сайтов

    Код (Text):
    1. <?php
    2. $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
    3. echo "Peter is " . $age['Peter'] . " years old.";
    4. ?>
    я думал можно при помощи GET отправит Peter и получить 35.
     
  6. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Я не сказал, что это невозможно.

    Добавлено спустя 3 минуты 24 секунды:
    В общем ладно.
    Код (PHP):
    1. <?php
    2.  
    3. $account = array(
    4.     "foo" => "bar",
    5.     "bar" => "foo",
    6. );
    7.  
    8. $key = $_GET['key'];
    9.  
    10. if (isset($_GET['key']) && $_GET['key'] != '') {
    11.    if (in_array($_GET['key'], $account)) {
    12.       echo $account[$key];
    13.    } else {
    14.       echo 'error';
    15.    }
    16. }
    17.  
    18. ?>
     
  7. Notum

    Notum Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    8
    Симпатии:
    0
    Спасибо большое.
     
  8. Notum

    Notum Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    8
    Симпатии:
    0
    mr.akv,
    Я попробовал слегка изменить ваш код, а именно добавил новые значения в массив и код почему-то уже не работает.

    Код (Text):
    1. <?php
    2.  
    3. $account = array(
    4.     "test1" => "value1",
    5.     "test2" => "value2",
    6.     "test3" => "value3",
    7. );
    8.  
    9. $key = $_GET['key'];
    10.  
    11. if (isset($_GET['key']) && $_GET['key'] != '') {
    12.    if (in_array($_GET['key'], $account)) {
    13.       echo $account[$key];
    14.    } else {
    15.       echo 'error';
    16.    }
    17. }
    18. exit;
    19.  
    20. ?>
    То есть теперь при вводе test1 выводиться Error, вместо value1
     
  9. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    сразу после $key = $_GET['key'];
    напишите
    var_dump($key);
    что выведет?
     
  10. Notum

    Notum Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    8
    Симпатии:
    0
    Исправил:
    Код (Text):
    1. $key = $_GET['key'];
    2. var_dump($key);
    string(5) "test2" error
     
  11. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    А. Так функция in_array ищет по значениям, а не по ключам.
     
  12. Notum

    Notum Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    8
    Симпатии:
    0
    А вы не подскажите как исправит, что бы искал именно по ключам?
     
  13. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Код (Text):
    1.    if (in_array($_GET['key'], $account)) {
    вместо поиска проверяйте, задан ли ключ.
    Код (Text):
    1.    if (isset($account[$key])) {
     
  14. Notum

    Notum Новичок

    С нами с:
    14 апр 2015
    Сообщения:
    8
    Симпатии:
    0
    Большое спасибо.
    Сейчас всё работает как нужно.