Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Не пойму как сделать этот GET...
Til_Seier  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 24
Пользователь №: 42746
На форуме: 8 месяцев, 15 дней
Карма:




Всем привет,
Опишу задачу кратко, в принципе думаю все довольно понятно
Я принимаю массив:
Array
(
    [Id] => 3
    [Name] => Test
    [T_EX_ID] => ex_id
    [T_EX_ID_PH] => {ex_id}
    [T_EX_ID_N] => EX_ID
    [T_COST] => cost
    [T_COST_PH] => {cost}
    [T_COST_N] => COST
    [T_CV_1] =>
    [T_PH_1] =>
    [T_CN_1] =>
    [T_CV_2] => color
    [T_PH_2] => {color}
    [T_CN_2] => COLOR
    [T_CV_3] =>
    [T_PH_3] =>
    [T_CN_3] =>
    [T_CV_4] =>
    [T_PH_4] =>
    [T_CN_4] =>
    [T_CV_5] => job
    [T_PH_5] => {job}
    [T_CN_5] => JOB
    [T_CV_6] => car
    [T_PH_6] => {car}
    [T_CN_6] => CAR
    [T_CV_7] =>
    [T_PH_7] =>
    [T_CN_7] =>
    [T_CV_8] =>
    [T_PH_8] =>
    [T_CN_8] =>
    [T_CV_9] => phone
    [T_PH_9] => {test_phone}
    [T_CN_9] => PHONE
    [T_CV_10] =>
    [T_PH_10] =>
    [T_CN_10] =>
)


Помогите мне пожалуйста
Какой оптимальный способ сделать из этого массива
вот такую строку (т.е. GET запрос):

?ex_id={ex_id}&cost={cost}&color={color}&job={job}&car={car}&phone={test_phone}


Это сообщение отредактировал Til_Seier - 14.06.2016 - 15:32
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 723
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 15 дней
Карма: 21




Можно сделать так например: выбрать из массива значения по нужным Вам ключам сложить их в массив например такого вида: [0]=>ex_id={ex_id} [1]=>cost={cost} ... затем взять и сделать из массива строку $comma_separated = implode("&", $dataRow);
Писать в массив можно например так

$dataRow = Array();
$dataRow[]=$array[T_EX_ID]."=". $array[T_EX_ID_PH];
$dataRow[]=$array[T_COST]."=". $array[T_COST_PH];

Но это только при условии, что ключи постоянные и Вы знаете какие ключи нужны.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Til_Seier  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 24
Пользователь №: 42746
На форуме: 8 месяцев, 15 дней
Карма:




Да ключи постоянные но какие именно потребуются заранее не известно

Например, если массив такой:
Array
(
[
Id] => 3
[Name] => Test3
[T_EX_ID] =>
[
T_EX_ID_PH] =>
[
T_EX_ID_N] =>
[
T_COST] => price
[T_COST_PH] => {cost}
[T_COST_N] => PRICE
[T_CV_1] =>
[
T_PH_1] =>
[
T_CN_1] =>
[
T_CV_2] =>
[
T_PH_2] =>
[
T_CN_2] =>
[
T_CV_3] => gender
[T_PH_3] => {gender}
[T_CN_3] => GENDER
[T_CV_4] => name
[T_PH_4] => {full_name}
[T_CN_4] => NAME
[T_CV_5] =>
[
T_PH_5] =>
[
T_CN_5] =>
[
T_CV_6] =>
[
T_PH_6] =>
[
T_CN_6] =>
[
T_CV_7] => home
[T_PH_7] => {home}
[T_CN_7] => HOME
[T_CV_8] =>
[
T_PH_8] =>
[
T_CN_8] =>
[
T_CV_9] =>
[
T_PH_9] =>
[
T_CN_9] =>
[
T_CV_10] => count
[T_PH_10] => {count}
[T_CN_10] => COUNT
)


тогда запрос должен выглядеть так:

?price={cost}&gender={gender}&name={full_name}&home={home}&count={count}


Это сообщение отредактировал Til_Seier - 14.06.2016 - 16:29
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 723
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 15 дней
Карма: 21




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

$dataRow = Array();
$dataRow[]=$array[0][0]."=". $array[0][1];
$dataRow[]=$array[1][0]."=". $array[1][1];

Можно это все автоматизировать при помощи цикла for от 0 до длинны массива.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Til_Seier  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 24
Пользователь №: 42746
На форуме: 8 месяцев, 15 дней
Карма:




Огромное спасибо!

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

$array = array(
'id' => '3',
'name' => 'Test3',
'T_EX_ID' => 'ex',
'T_EX_ID_PH' => '{ex}',
'T_EX_ID_N' => 'EX',
'T_COST' => '',
'T_COST_PH' => '',
'T_COST_N' => '',
'T_CV_1' => '',
'T_PH_1' => '',
'T_CN_1' => '',
'T_CV_2' => '',
'T_PH_2' => '',
'T_CN_2' => '',
'T_CV_3' => 'color',
'T_PH_3' => '{color}',
'T_CN_3' => 'COLOR',
'T_CV_4' => '',
'T_PH_4' => '',
'T_CN_4' => '',
'T_CV_5' => 'job',
'T_PH_5' => '{job}',
'T_CN_5' => 'JOB',
'T_CV_6' => '',
'T_PH_6' => '',
'T_CN_6' => '',
'T_CV_7' => '',
'T_PH_7' => '',
'T_CN_7' => '',
'T_CV_8' => '',
'T_PH_8' => '',
'T_CN_8' => '',
'T_CV_9' => 'phone',
'T_PH_9' => '{phone}',
'T_CN_9' => 'PHONE',
'T_CV_10' => '',
'T_PH_10' => '',
'T_CN_10' => '',
);


$i=0;
while(isset($array[ 'T_CV_' . ++$i] , $array[ 'T_PH_' . $i])) {
if(empty($array['T_CV_'. $i]) || empty($array['T_PH_'. $i]) || empty($array['T_CN_'. $i])){
unset($array['T_CV_' . $i]);
unset($array['T_PH_' . $i]);
unset($array['T_CN_' . $i]);
}
}

if(empty($array['T_EX_ID']) || empty($array['T_EX_ID_PH']) || empty($array['T_EX_ID_N'])){
unset($array['T_EX_ID']);
unset($array['T_EX_ID_PH']);
unset($array['T_EX_ID_N']);
}
if(empty($array['T_COST']) || empty($array['T_COST_PH']) || empty($array['T_COST_N'])){
unset($array['T_COST']);
unset($array['T_COST_PH']);
unset($array['T_COST_N']);
}

// $array = array_filter($array);

$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' => '',);
$array = array_intersect_key($array, $new_array);

$array = array_chunk($array, 2);

$link = "";
if(count($array)){
$link = "?";
foreach ($array as $key => $value) {
$link .= $value[0]."=".$value[1]."&";
}
$link= substr($link,0,-1);
}
echo $link;
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 723
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 15 дней
Карма: 21




можно еще вот так удалять пустые значения.

<?php


// массив с пустыми строками
$arr = array('T_EX_ID1'=>'', 'T_EX_ID2'=>'e', 'T_EX_ID3'=>'', 'T_EX_ID4'=>'x', 'T_EX_ID5'=>'', 'T_EX_ID6'=>'p', 'T_EX_ID7'=>'', 'T_EX_ID8'=>'a', 'T_EX_ID9'=>'', 'T_EX_ID10'=>'n', 'T_EX_ID11'=>'', 'T_EX_ID12'=>'g', 'T_EX_ID13'=>'', 'T_EX_ID14'=>'e','T_EX_ID15'=>'n');

print_r($arr);

$new_arr = array_diff($arr, array(''));

print_r($new_arr);
$new_arr=array_chunk($new_arr,2);
print_r($new_arr);
?>



Array
(
[T_EX_ID1] =>
[T_EX_ID2] => e
[T_EX_ID3] =>
[T_EX_ID4] => x
[T_EX_ID5] =>
[T_EX_ID6] => p
[T_EX_ID7] =>
[T_EX_ID8] => a
[T_EX_ID9] =>
[T_EX_ID10] => n
[T_EX_ID11] =>
[T_EX_ID12] => g
[T_EX_ID13] =>
[T_EX_ID14] => e
[T_EX_ID15] => n
)
Array
(
[T_EX_ID2] => e
[T_EX_ID4] => x
[T_EX_ID6] => p
[T_EX_ID8] => a
[T_EX_ID10] => n
[T_EX_ID12] => g
[T_EX_ID14] => e
[T_EX_ID15] => n
)
Array
(
[0] => Array
(
[0] => e
[1] => x
)

[1] => Array
(
[0] => p
[1] => a
)

[2] => Array
(
[0] => n
[1] => g
)

[3] => Array
(
[0] => e
[1] => n
)

)



--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса