如何将这种阵列结合PHP [英] How to combine this arrays PHP
本文介绍了如何将这种阵列结合PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想下面所示的三个阵列组合,我不知道该怎么做,我想借此公司code
每个阵列和使之成为一个阵列。
I want to combine the three arrays shown below and I don't know how to do that, I want to take the companyCode
of each array and make it for one array.
我有一个这样的数组,
Array(
[0] => Array(
[companyCode] => SimpleXMLElement Object(
[0] => 'AD'
)
[name] => SimpleXMLElement Object(
[0] => 'NYCT01'
)
[vehicleRentalPrefType] => SimpleXMLElement Object(
[0] => 'ECAR'
)
[rateAmount] => SimpleXMLElement Object(
[0] => '295.62'
)
);
[1] => Array(
[companyCode] => SimpleXMLElement Object(
[0] => 'AD'
)
[name] => SimpleXMLElement Object(
[0] => 'NYCT01'
)
[vehicleRentalPrefType] => SimpleXMLElement Object(
[0] => 'SCAR'
)
[rateAmount] => SimpleXMLElement Object(
[0] => '356.25'
)
[2] => Array(
[companyCode] => SimpleXMLElement Object(
[0] => 'AD'
)
[name] => SimpleXMLElement Object(
[0] => 'NYCT01'
)
[vehicleRentalPrefType] => SimpleXMLElement Object(
[0] => 'PCAR'
)
[rateAmount] => SimpleXMLElement Object(
[0] => '562.36'
)
)
)
我想这样的:
Array(
[AD] => Array(
[NYCT01] => Array(
[ECAR] => Array(
[0] => '295.62'
)
[SCAR] => Array(
[0] => '356.25'
)
[PCAR] => Array(
[0] => '562.36'
)
)
)
)
我怎么能做到这一点,我试着做一些循环,但我没有得到任何结果,请帮助。
How can I do that, I tried to do some loops but I'm getting no result please help.
推荐答案
下面是我创建的群功能阵列几天前:
Here's a function I created to group arrays a couple of days ago:
为PHP 5.3及以上
class Fx
{
public static function GroupBy(&$arr, $groupby, $valueFunctions = null)
{
$groupby = is_array($groupby) ? $groupby : array($groupby);
$valueFunctions = is_array($valueFunctions) ? $valueFunctions : array($valueFunctions);
$group1 = array();
foreach($arr as $elem)
{
$group = is_callable($groupby[0]) ? $groupby[0]($elem) : $elem[$groupby[0]];
$group1[$group][] = is_callable($valueFunctions[0]) ? $valueFunctions[0]($elem) : (is_null($valueFunctions[0]) ? $elem : $elem[$valueFunctions[0]]);
}
if(count($groupby) > 1)
{
$group2 = array();
$gb_next = array_slice($groupby, 1);
$vf_next = (count($valueFunctions) > 1) ? array_slice($valueFunctions, 1) : null;
foreach($group1 as $group => $elems)
{
$group2[$group] = self::GroupBy($elems, $gb_next, $vf_next);
}
return $group2;
}
return $group1;
}
}
> = 5.3例如
$new = Fx::GroupBy(
$arr,
array(
function($elem){ return (string)$elem['companyCode'][0]; },
function($elem){ return (string)$elem['name'][0]; },
function($elem){ return (string)$elem['vehicleRentalPrefType'][0]; }
),
array(
null,
null,
function($elem){ return (float)$elem['rateAmount'][0]; }
)
);
print_r($new);
为PHP 5.2,并可能在
class Fx
{
public static function GroupBy(&$arr, $groupby, $valueFunctions = null)
{
$groupby = is_array($groupby) ? $groupby : array($groupby);
$valueFunctions = is_array($valueFunctions) ? $valueFunctions : array($valueFunctions);
$group1 = array();
foreach($arr as $elem)
{
$gbIsFunc = (substr($groupby[0], 0, 5) == 'func:');
$gbFunc = substr($groupby[0], 5);
$vIsFunc = (substr($valueFunctions[0], 0, 5) == 'func:');
$vFunc = substr($valueFunctions[0], 5);
$group = $gbIsFunc ? $gbFunc($elem) : $elem[$groupby[0]];
$group1[$group][] = $vIsFunc ? $vFunc($elem) : (is_null($valueFunctions[0]) ? $elem : $elem[$valueFunctions[0]]);
}
if(count($groupby) > 1)
{
$group2 = array();
$gb_next = array_slice($groupby, 1);
$vf_next = (count($valueFunctions) > 1) ? array_slice($valueFunctions, 1) : null;
foreach($group1 as $group => $elems)
{
$group2[$group] = self::GroupBy($elems, $gb_next, $vf_next);
}
return $group2;
}
return $group1;
}
}
< = 5.2例如
function gbFunc1($elem){ return (string)$elem['companyCode'][0]; }
function gbFunc2($elem){ return (string)$elem['name'][0]; }
function gbFunc3($elem){ return (string)$elem['vehicleRentalPrefType'][0]; }
function vFunc3($elem){ return (float)$elem['rateAmount'][0]; }
$new = Fx::GroupBy($arr, array('func:gbFunc1', 'func:gbFunc2', 'func:gbFunc3'), array(null, null, 'func:vFunc3'));
print_r($new);
这篇关于如何将这种阵列结合PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文