Как урленкодировать многомерный массив? - PullRequest
5 голосов
/ 05 января 2012

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

$formFields = Array ( 
[0] => Array ( [form_name] => productID [form_value] => 13 ) 
[1] => Array ( [form_name] => campaign [form_value] => email@gmail.com ) 
[2] => Array ( [form_name] => redirect [form_value] => http://example.com ) ) 

Каждый массив имеет имя формы и значение формы.

Это то, что я пытаюсь получитьto:

$desired_results = 
productID => 13
campaign => email@gmail.com
redirect => http://example.com

Каждый раз, когда я пытаюсь разделить их, я получаю: form_name => productID или что-то в этом роде.

Я пытаюсь взять результаты, а затем urlencodeих:

productID=13&campaign=email&gmail.com&redirect=http://example.com&

Ответы [ 4 ]

18 голосов
/ 05 января 2012

вы можете использовать сериализацию и десериализацию:

$str = urlencode(serialize($formFields));

и затем расшифровать его:

$formFields = unserialize(urldecode($str));
3 голосов
/ 05 января 2012

Возвращает значения независимо от названий клавиш.

$result = array();

foreach ($formFields as $key => $value)
{
  $tmp = array_values($value);
  $result[$tmp[0]] = $tmp[1];
}
print(http_build_query($result));

foreach проходит по главному массиву, сохраняя подрешетки в переменной $value. Функция array_values ​​ возвращает все значения из каждого массива в виде нового числового массива. Значение [form_name] будет сохранено в первом индексе, [form_value] во втором.

Встроенная http_build_query функция возвращает строку с кодировкой urlen.

0 голосов
/ 26 мая 2015
<!-- Encode entire array here -->

function encode(&$item, $key) {
$item = rawurlencode($item);
}

array_walk_recursive($input_array, 'encode');
0 голосов
/ 18 июля 2014

Пользовательская функция для ключей и значений массива urlencode.

function urlencode_array($array){
    $out_array = array();
    foreach($array as $key => $value){
    $out_array[urlencode($key)] = urlencode($value);
    }
return $out_array;
}
...