我一直在寻找缩短代码的方法,但找不到这个问题的答案。
在此示例数组中:
$addressData = array(
'Full Name',
'Address Line 1',
'Address Line 2',
30 => 'City/Town',
22 => 'Province/State/Region',
27 => 'Postal/ZIP code',
'Country',
);
前三个值将分别分配键0,1和2。最后一个值(国家/地区)将被分配键31。
当我浏览这个数组时,有没有什么方法可以用不同于自动分配值的方式处理这些手动赋值?
我在手册中找不到任何内容,但我认为社区可以提供帮助。
编辑以进一步澄清。这不是真正的代码,但它解释了我希望实现的目标:
foreach($addressData as $key => $value){
if(is_set_manually($key)){
$someValue = TRUE;
}
}
答案 0 :(得分:0)
不确定我是否正确理解了您的问题,但是如果您想要修复序列,如果它被破坏,您可以执行以下操作:
<?php
$addressData = array(
'Full Name',
'Address Line 1',
'Address Line 2',
30 => 'City/Town',
22 => 'Province/State/Region',
27 => 'Postal/ZIP code',
'Country',
);
$result= [];
$first = 0;
foreach($addressData as $key=>$data){
if($key != $first && ($key > $first+1)){
$newkey = $first;
$result[$newkey] = $data;
}else{
$result[$key] = $data;
}
$first++;
}
print_r($result);
新数组$result
如下所示:
Array
(
[0] => Full Name
[1] => Address Line 1
[2] => Address Line 2
[3] => City/Town
[4] => Province/State/Region
[5] => Postal/ZIP code
[6] => Country
)
答案 1 :(得分:0)
如果您可以分配如下格式的数组可能对您的答案有帮助。
<?php
$addressData = array(
'Full Name',
'Address Line 1',
'Address Line 2',
array(30 => 'City/Town'),
array(22 => 'Province/State/Region'),
array(27 => 'Postal/ZIP code'),
'Country',
);
foreach($addressData as $key => $value){
if(is_array($value)){
echo 'Manually Key<br>';
} else {
echo 'Dynamic Key<br>';
}
}
?>