如何创建一个基于字符串的prefixes子阵列? [英] How to create sub arrays based on prefixes of string?
本文介绍了如何创建一个基于字符串的prefixes子阵列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有(一个例子)的一维阵列
{
[Pagamento_valor_liquido] =>串(3)111
[Pagamento_valor_bruto] =>串(3)222
[TipoPagamento_id] =>串(3)333
[TipoPagamento_descricao] =>串(3)444
}
和我需要帮助的两个子阵列变压器这样的:
{
[Pagamento] =>阵列(2){
[valor_liquido] =>串(3)111
[valor_bruto] =>串(3)222
}
[TipoPagamento] =>阵列(2){
[ID] =>串(3)333
[valor_bruto] =>串(3)444
}
}
如何与这种模式(Father_son_name)?做一个通用的方法
谢谢,
塞尔索·
解决方案
$阵列=阵列(Pagamento_valor_liquido=>中111,Pagamento_valor_bruto=>中222 TipoPagamento_id=>中333,TipoPagamento_descricao=>中444);$结果=阵列();
的foreach($数组作为$ K => $ V){
$名称=爆炸('_',$ K);
$ =则newkey array_shift($名);
$ NEWNAME =破灭('_',$名);
$结果[$则newkey] [$ NEWNAME = $ V;
}
var_export($结果);
看着它在行动 此处
似乎是pretty通用为你的目的。
I have a one-dimensional array with (a example):
{
["Pagamento_valor_liquido"]=> string(3) "111"
["Pagamento_valor_bruto"]=> string(3) "222"
["TipoPagamento_id"]=> string(3) "333"
["TipoPagamento_descricao"]=> string(3) "444"
}
and i need help to transforme this in two sub arrays:
{
["Pagamento"]=> array(2) {
["valor_liquido"]=> string(3) "111"
["valor_bruto"]=> string(3) "222"
}
["TipoPagamento"]=> array(2) {
["id"]=> string(3) "333"
["valor_bruto"]=> string(3) "444"
}
}
How do it in a generic way with this pattern (Father_son_name)?
Thanks, Celso
解决方案
$array = array("Pagamento_valor_liquido" => "111", "Pagamento_valor_bruto" => "222", "TipoPagamento_id" => "333", "TipoPagamento_descricao" => "444");
$result = array();
foreach ($array as $k => $v) {
$name = explode('_', $k);
$newkey = array_shift($name);
$newname = implode('_', $name);
$result[$newkey][$newname] = $v;
}
var_export($result);
Watch it in action here
Seems to be pretty generic for your purpose.
这篇关于如何创建一个基于字符串的prefixes子阵列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文