PHP中的数组划分问题
我有一个很小的问题,但我只是无法解决这个问题 我有以下数组:PHP中的数组划分问题,php,arrays,sorting,arraylist,multidimensional-array,Php,Arrays,Sorting,Arraylist,Multidimensional Array,我有一个很小的问题,但我只是无法解决这个问题 我有以下数组: Array ( [0] => Array ( [Asset Address 1 Label] => [Asset Address 1 Organization] => [Asset Address 1 Name prefix] => Hotel Taj [Asset Address 1 F
Array
(
[0] => Array
(
[Asset Address 1 Label] =>
[Asset Address 1 Organization] =>
[Asset Address 1 Name prefix] => Hotel Taj
[Asset Address 1 First name] => Maan
[Asset Address 1 Middle name] => Singh
[Asset Address 1 Last name] => Hotel
[Asset Address 1 Name suffix] =>
[Asset Address 1 Street] =>
[Asset Address 1 Street 2] =>
[Asset Address 1 Zip/Postal Code] => 110020
[Asset Address 1 City] =>
[Asset Address 1 State] =>
[Asset Address 1 State Combined code] => IN-DL
[Asset Address 1 Country ISO2 code] => IN
[Asset Address 1 Types 1 Name] => billing
[Asset Address 1 Types 2 Name] =>
[Asset Address 2 Label] => Himachal
[Asset Address 2 Organization] =>
[Asset Address 2 Name prefix] =>
[Asset Address 2 First name] => Hotel
[Asset Address 2 Middle name] =>
[Asset Address 2 Last name] => Taj
[Asset Address 2 Name suffix] =>
[Asset Address 2 Street] =>
[Asset Address 2 Street 2] =>
[Asset Address 2 Zip/Postal Code] => 110020
[Asset Address 2 City] =>
[Asset Address 2 State] =>
[Asset Address 2 State Combined code] => IN-CT
[Asset Address 2 Country ISO2 code] => IN
[Asset Address 2 Types 1 Name] => shipping
[Asset Address 2 Types 2 Name] =>
)
)
我试图将内部资产地址1和2拆分为数组中的另一个维度
Array
(
[0] => Array
(
[0] => Array
(
[Asset Address 1 Label] => asas
[Asset Address 1 Organization] =>
[Asset Address 1 Name prefix] =>
[Asset Address 1 First name] => asas
[Asset Address 1 Middle name] => asasas
[Asset Address 1 Last name] => asasa
[Asset Address 1 Name suffix] => asasa
[Asset Address 1 Street] => asasa
[Asset Address 1 Street 2] =>
[Asset Address 1 Zip/Postal Code] => 121212
[Asset Address 1 City] =>
[Asset Address 1 State] =>
[Asset Address 1 State Combined code] => AO-CUS
[Asset Address 1 Country ISO2 code] => AO
[Asset Address 1 Types 1 Name] => billing
[Asset Address 1 Types 2 Name] => shipping
)
[1] => Array
(
[Asset Address 2 Label] =>
[Asset Address 2 Organization] =>
[Asset Address 2 Name prefix] =>
[Asset Address 2 First name] =>
[Asset Address 2 Middle name] =>
[Asset Address 2 Last name] =>
[Asset Address 2 Name suffix] =>
[Asset Address 2 Street] =>
[Asset Address 2 Street 2] =>
[Asset Address 2 Zip/Postal Code] =>
[Asset Address 2 City] =>
[Asset Address 2 State] =>
[Asset Address 2 State Combined code] =>
[Asset Address 2 Country ISO2 code] =>
[Asset Address 2 Types 1 Name] =>
[Asset Address 2 Types 2 Name] =>
)
)
)
请注意,因为上面没有显示数组中的其他字段,因此我必须尝试使用正则表达式进行过滤,如下所示:
$filtred = array();
foreach($csv as $oldkey => $value){
$regExpression = '/(Asset Address )['.$oldkey.'] [\w]+/';
foreach ($value as $key => $value) {
if(preg_match($regExpression , $key)){
$filtred[$oldkey][$key] = $value;
}
}
}
print_r($filtred);
问题:
基本上,当$oldkey
为0时,它从数组开始就不起作用,它跳过并适用于$oldkey1
。为什么?
另外,使用这种方法,我创建了一个单独的数组,我试图在现有数组中增加维度
我希望我解释得很好。请尝试下面的代码,以便按照上面提到的格式进行格式化
$filtred = array();
$n = 1;
foreach($csv as $oldkey => $values){
$i = 0; $j = 0;
foreach (array_keys($values) as $key => $value) {
if(!preg_match('/(Asset Address )['.$n.'] [\w]+/' , $value)){
$n++; $j++;
}
$filtred[$i][$j][$value] = $values[$value];
}
$i++;
}
当
$oldkey
为0
时,regexp将为/(资产地址)[0][\w]+/
。是否有0
的数组键?哦,太傻了,好吧,我添加了$oldkey+1,它已经开始接受资产地址1和2。谢谢@Deadooshka问题1解决了,关于如何将现有地址字段替换为同一数组中的多维数组,有什么想法吗?