Я возвращаю этот тип массива:
Array
(
[data(0)] => somevalue
[data(1)] => somevalue
[data(2)] => somevalue
)
И мне нужно преобразовать его в следующее:
Array (
[data] => Array (somevalue
[0] => somevalue
[1] => somevalue
[2] => somevalue
)
)
Имейте в виду, что могут быть и другие ключи, поэтому просто запуститецикл for для счетчика и подачи каждого значения в не является вариантом.
Я думал, что действительно упростил бы вещи, разместив простой пример выше, но я думаю, что этого недостаточно, чтобы рассказать историю.
Данные представляют собой строку, возвращенную из PayPal.В PayPal есть функция deformatNVP (), которая выполняет начальную работу по переносу этого в массив, однако это не тот массив, который может обрабатывать PHP.Это может выглядеть так:
Array(
[responseEnvelope.ack] => somevalue
[responseEnvelope.timestamp] => somevalue
[responseEnvelope.build] => somevalue
[responseEnvelope.correlationId] => somevalue
)
У него также может быть что-то вроде:
Array(
[personalData(0)] => somevalue
[personalData(1)] => somevalue
[personalData(2)] => somevalue
)
Это совершенно некрасиво, поэтому первый шаг ниже исправляет пунктирные массивы, но я остаюсь сэти ключи с круглыми скобками, чтобы иметь дело.
$data = array();
foreach ($array as $key => $value) {
$subkey = "";
$_keys = explode('.', $key);
if(count($_keys) > 1){
$key = $_keys[0];
$subkey = $_keys[1];
}
if(preg_match("/([0-9]+)/", $key, $matches)){
$key = preg_replace("/\([0-9]+\)/", "", $key);
$data[$key][$matches[0]][$subkey] = $value;
}
elseif($subkey)
$data[$key][$subkey] = $value;
else
$data[$key] = $value;
}
return $data;