За последние 24 часа нас посетили 23678 программистов и 1857 роботов. Сейчас ищут 1878 программистов ...

Не пойму как сделать этот GET...

Тема в разделе "PHP для новичков", создана пользователем Til_Seier, 14 июн 2016.

  1. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    Всем привет,
    Опишу задачу кратко, в принципе думаю все довольно понятно
    Я принимаю массив:
    Код (Text):
    1. Array
    2. (
    3.     [Id] => 3
    4.     [Name] => Test
    5.     [T_EX_ID] => ex_id
    6.     [T_EX_ID_PH] => {ex_id}
    7.     [T_EX_ID_N] => EX_ID
    8.     [T_COST] => cost
    9.     [T_COST_PH] => {cost}
    10.     [T_COST_N] => COST
    11.     [T_CV_1] =>
    12.     [T_PH_1] =>
    13.     [T_CN_1] =>
    14.     [T_CV_2] => color
    15.     [T_PH_2] => {color}
    16.     [T_CN_2] => COLOR
    17.     [T_CV_3] =>
    18.     [T_PH_3] =>
    19.     [T_CN_3] =>
    20.     [T_CV_4] =>
    21.     [T_PH_4] =>
    22.     [T_CN_4] =>
    23.     [T_CV_5] => job
    24.     [T_PH_5] => {job}
    25.     [T_CN_5] => JOB
    26.     [T_CV_6] => car
    27.     [T_PH_6] => {car}
    28.     [T_CN_6] => CAR
    29.     [T_CV_7] =>
    30.     [T_PH_7] =>
    31.     [T_CN_7] =>
    32.     [T_CV_8] =>
    33.     [T_PH_8] =>
    34.     [T_CN_8] =>
    35.     [T_CV_9] => phone
    36.     [T_PH_9] => {test_phone}
    37.     [T_CN_9] => PHONE
    38.     [T_CV_10] =>
    39.     [T_PH_10] =>
    40.     [T_CN_10] =>
    41. )
    Помогите мне пожалуйста
    Какой оптимальный способ сделать из этого массива
    вот такую строку (т.е. GET запрос):

    Код (Text):
    1. ?ex_id={ex_id}&cost={cost}&color={color}&job={job}&car={car}&phone={test_phone}
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Скажем массив в переменной $arr
    PHP:
    1. $q = "?ex_id={$arr['T_EX_ID_PH']}&cost={$arr['T_COST_PH']}&color={color}&job={job}&car={car}&phone={test_phone}";
    Сложный (фигурный) синтаксис https://secure.php.net/manual/ru/language.types.string.php
     
    metadon и Til_Seier нравится это.
  3. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    @denis01, ты наверное неправильно меня понял, мне нужно сформировать запрос в соответствии с данными которые будут в массиве
    Например, если массив такой:
    Код (Text):
    1. Array
    2. (
    3.     [Id] => 3
    4.     [Name] => Test3
    5.     [T_EX_ID] =>
    6.     [T_EX_ID_PH] =>
    7.     [T_EX_ID_N] =>
    8.     [T_COST] => price
    9.     [T_COST_PH] => {cost}
    10.     [T_COST_N] => PRICE
    11.     [T_CV_1] =>
    12.     [T_PH_1] =>
    13.     [T_CN_1] =>
    14.     [T_CV_2] =>
    15.     [T_PH_2] =>
    16.     [T_CN_2] =>
    17.     [T_CV_3] => gender
    18.     [T_PH_3] => {gender}
    19.     [T_CN_3] => GENDER
    20.     [T_CV_4] => name
    21.     [T_PH_4] => {full_name}
    22.     [T_CN_4] => NAME
    23.     [T_CV_5] =>
    24.     [T_PH_5] =>
    25.     [T_CN_5] =>
    26.     [T_CV_6] =>
    27.     [T_PH_6] =>
    28.     [T_CN_6] =>
    29.     [T_CV_7] => home
    30.     [T_PH_7] => {home}
    31.     [T_CN_7] => HOME
    32.     [T_CV_8] =>
    33.     [T_PH_8] =>
    34.     [T_CN_8] =>
    35.     [T_CV_9] =>
    36.     [T_PH_9] =>
    37.     [T_CN_9] =>
    38.     [T_CV_10] => count
    39.     [T_PH_10] => {count}
    40.     [T_CN_10] => COUNT
    41. )
    тогда запрос должен выглядеть так:

    Код (Text):
    1. ?price={cost}&gender={gender}&name={full_name}&home={home}&count={count}
     
  4. mr.akv

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

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Нет. Это ты его неправильно понял. Попробуй перечитать и понять ещё раз.
     
    Til_Seier нравится это.
  5. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    Да я перечитал еще раз, но до сих пор не понимаю, объясните что именно я должен был понять, что могло бы решить мою задачу?

    Есть еще вопрос, который касается темы, каким образом я мог бы превратить такой массив:

    Код (Text):
    1. Array
    2. (
    3.        [T_EX_ID] => ex_id
    4.        [T_EX_ID_PH] => {ex_id}
    5.        [T_CV_3] => color
    6.        [T_PH_3] => {color}
    7.        [T_CV_5] => closes
    8.        [T_PH_5] => {closes}
    9.        [T_CV_9] => phone
    10.        [T_PH_9] => {phone}
    11. )
    в такой:

    Код (Text):
    1. Array
    2. (
    3.        [ex_id] => {ex_id}
    4.        [color] => {color}
    5.        [closes] => {closes}
    6.        [phone] => {phone}
    7. )
     
  6. mr.akv

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

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    ты вообще пробовал этот код?
    PHP:
    1. $q = "?ex_id={$arr['T_EX_ID_PH']}&cost={$arr['T_COST_PH']}&color={color}&job={job}&car={car}&phone={test_phone}";
    2. echo $q;
    что он тебе выдаст?
     
    Til_Seier нравится это.
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  8. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    На самом деле это не совсем то, что мне было нужно

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

    PHP:
    1. $array = array(
    2.                 'id' => '3',
    3.                'name' => 'Test3',
    4.                'T_EX_ID' => 'ex',
    5.                'T_EX_ID_PH' => '{ex}',
    6.                'T_EX_ID_N' => 'EX',
    7.                'T_COST' => '',
    8.                'T_COST_PH' => '',
    9.                'T_COST_N' => '',
    10.                'T_CV_1' => '',
    11.                'T_PH_1' => '',
    12.                'T_CN_1' => '',
    13.                'T_CV_2' => '',
    14.                'T_PH_2' => '',
    15.                'T_CN_2' => '',
    16.                'T_CV_3' => 'color',
    17.                'T_PH_3' => '{color}',
    18.                'T_CN_3' => 'COLOR',
    19.                'T_CV_4' => '',
    20.                'T_PH_4' => '',
    21.                'T_CN_4' => '',
    22.                'T_CV_5' => 'job',
    23.                'T_PH_5' => '{job}',
    24.                'T_CN_5' => 'JOB',
    25.                'T_CV_6' => '',
    26.                'T_PH_6' => '',
    27.                'T_CN_6' => '',
    28.                'T_CV_7' => '',
    29.                'T_PH_7' => '',
    30.                'T_CN_7' => '',
    31.                'T_CV_8' => '',
    32.                'T_PH_8' => '',
    33.                'T_CN_8' => '',
    34.                'T_CV_9' => 'phone',
    35.                'T_PH_9' => '{phone}',
    36.                'T_CN_9' => 'PHONE',
    37.                'T_CV_10' => '',
    38.                'T_PH_10' => '',
    39.                'T_CN_10' => '',
    40.             );
    41.  
    42.         $i=0;
    43.         while(isset($array[ 'T_CV_' . ++$i] , $array[ 'T_PH_' . $i])) {
    44.             if(empty($array['T_CV_'. $i]) || empty($array['T_PH_'. $i]) || empty($array['T_CN_'. $i])){
    45.                 unset($array['T_CV_' . $i]);
    46.                 unset($array['T_PH_' . $i]);
    47.                 unset($array['T_CN_' . $i]);
    48.             }
    49.         }
    50.         if(empty($array['T_EX_ID']) || empty($array['T_EX_ID_PH']) || empty($array['T_EX_ID_N'])){
    51.             unset($array['T_EX_ID']);
    52.             unset($array['T_EX_ID_PH']);
    53.             unset($array['T_EX_ID_N']);
    54.         }
    55.         if(empty($array['T_COST']) || empty($array['T_COST_PH']) || empty($array['T_COST_N'])){
    56.             unset($array['T_COST']);
    57.             unset($array['T_COST_PH']);
    58.             unset($array['T_COST_N']);
    59.         }
    60.  
    61.         // $array = array_filter($array);
    62.  
    63.         $new_array = array('T_EX_ID' => '', 'T_EX_ID_PH' => '','T_COST' => '', 'T_COST_PH' => '', 'T_CV_1' => '', 'T_PH_1' => '', 'T_CV_2' => '', 'T_PH_2' => '', 'T_CV_3' => '', 'T_PH_3' => '', 'T_CV_4' => '', 'T_PH_4' => '', 'T_CV_5' => '', 'T_PH_5' => '', 'T_CV_6' => '', 'T_PH_6' => '', 'T_CV_7' => '', 'T_PH_7' => '', 'T_CV_8' => '', 'T_PH_8' => '', 'T_CV_9' => '', 'T_PH_9' => '', 'T_CV_10' => '', 'T_PH_10' => '',);
    64.         $array = array_intersect_key($array, $new_array);
    65.  
    66.         $array = array_chunk($array, 2);
    67.  
    68.         $link = "";
    69.         if(count($array)){
    70.             $link = "?";
    71.             foreach ($array as $key => $value) {
    72.                 $link .= $value[0]."=".$value[1]."&";
    73.             }
    74.             $link= substr($link,0,-1);
    75.         }
    76.        echo $link;
     
    denis01 нравится это.
  9. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    Какие у кого мысли по поводу кода?