Массив динамический, может быть с 7, более или менее ключами, за исключением того, что первый ключ никогда не изменяется.Как организовать этот массив
Array
(
[0] => Array
(
[ProviderID] => 1010
[ProviderName] => HAMZEPOUR, SHOKOUFEH
)
[1] => Array
(
[ContactName] => ABC XYZ
[Address1] => New York
[AddressType] => Physical
)
[2] => Array
(
[ContactName] => ABC XYZ
[Address1] => New York
[AddressType] => Billing
)
[3] => Array
(
[ContactName] => ABC XYZ
[Address1] => New York
[AddressType] => Mailing
)
[4] => Array
(
[AlgorithmID] => 1
[AlgoTitle] => Retro-Term
)
[5] => Array
(
[AlgorithmID] => 2
[AlgoTitle] => Modifier 25 errors
)
[6] => Array
(
[HoldType] => HoldType
[StatusID] => 1
)
[7] => Array
(
[HoldType] => HoldType
[StatusID] => 1
)
[8] => Array
(
[HoldType] => Hold
[StatusID] => 2
)
)
Мне нужно изменить его на что-то вроде этого:
Array
(
[ProviderInfo] => Array
(
[PORAProviderID] => 1010
[ProviderName] => HAMZEPOUR, SHOKOUFEH
)
[ProviderAddress] => Array
(
[Physical] => Array
(
[ContactName] => ABC XYZ
[Address1] => New York
[AddressType] => Physical
)
[Billing] => Array
(
[ContactName] => ABC XYZ
[Address1] => New York
[AddressType] => Billing
)
[Mailing] => Array
(
[ContactName] => ABC XYZ
[Address1] => New York
[AddressType] => Mailing
)
)
[ProviderAlgorithm] => Array
(
[0] => Array
(
[AlgorithmID] => 1
[AlgoTitle] => Retro-Term
)
[1] => Array
(
[AlgorithmID] => 2
[AlgoTitle] => Modifier 25 errors
)
)
[ProviderException] => Array
(
[0] => Array
(
[HoldType] => HoldType
[StatusID] => 1
)
[1] => Array
(
[HoldType] => HoldType
[StatusID] => 1
)
[2] => Array
(
[HoldType] => Hold
[StatusID] => 2
)
)
)
Первый массив является то, что я выборки из БД, как результат СП с четырьмя наборами результатов, я хотел бы организовать массив со путь что он выглядит во втором примере.
Я попытался сделать это:
$search_array = $array;
$countb = count($search_array);
$counta = count($search_array) - 1;
//echo $countb;
$key_search = array('AlgorithmID', 'PORAProviderID', 'ContactName', 'HoldType');
$key_new = array('ProviderAlgorithm', 'ProviderInfo', 'ProviderAddress', 'ProviderException');
$b = 0;
while ($b <= $countb) {
$a = 0;
while ($a <= $counta) {
if (array_key_exists($key_search[$b], $search_array[$a])) {
$array[$key_new[$b]] = $array[$a];
unset($array[$a]);
// $a=$a-1;
}
$a++;
}
$b++;
}
И это то, что я получаю:
Array
(
[ProviderAlgorithm] => Array
(
[AlgorithmID] => 2
[AlgoTitle] => Modifier 25 errors
)
[ProviderInfo] => Array
(
[PORAProviderID] => 1010
[ProviderName] => HAMZEPOUR, SHOKOUFEH
)
[ProviderAddress] => Array
(
[ContactName] => ABC XYZ
[Address1] => New York
[AddressType] => Mailing
)
[ProviderException] => Array
(
[HoldType] => HoldType
[StatusID] => 1
)
)
Link where I'm trying new things
Ответ на ваш вопрос, вероятно, слишком большой для этого сайта, но я призываю вас взгляните на некоторые функции массива PHP - в вашем распоряжении множество мощных. Например: [ключ] (http://php.net/manual/en/function.key.php), [array_keys] (http://php.net/manual/en/function.array-keys.php) –
Почему вы хотите реорганизовать массив? Какова ваша конечная цель? –
@AndyLester, потому что мне нужно использовать данные в разных местах, а исходный массив не имеет одинаковой длины, всегда часть адреса не обязательно имеет 3 типа всегда, а часть 'Algorithm' и' Exeption' имеют переменное количество в результат может быть от 0 до неограниченного –