我有一个mutidimention数组,我想要它的键:
Array
(
[1] => Array
(
[0] => 0
[1] => TEST1
[2] => TEST12
[3] => TEST13
[4] => TEST14
[5] => TEST15
[6] => TEST16
)
[2] => Array
(
[0] => 0
[1] => TEST2
[2] => TEST21
[3] => TEST22
[4] => TEST23
[5] => TEST24
[6] => TEST25
)
)
所以我这样做了,它有效:
foreach ( $data_1 as $k=>$v )
{
$data_1[$k]['bla0'] = $data_1[$k][0];
$data_1[$k]['bla1'] = $data_1[$k][1];
$data_1[$k]['bla2'] = $data_1[$k][2];
$data_1[$k]['bla3'] = $data_1[$k][3];
$data_1[$k]['bla4'] = $data_1[$k][4];
$data_1[$k]['bla5'] = $data_1[$k][5];
$data_1[$k]['bla6'] = $data_1[$k][6];
unset($data_1[$k][0],$data_1[$k][1],$data_1[$k][2],$data_1[$k][3],$data_1[$k][4],$data_1[$k][5],$data_1[$k][6]);
}
但它显示我:
注意:未定义的偏移:在...中为1
注意:未定义的偏移:2中...
注意:未定义的偏移:在...中为3
注意:未定义的偏移量:4英寸...
注意:未定义的偏移:在...中为5
注意:未定义的偏移:在...中为6
这个错误的任何来源?非常感谢!
答案 0 :(得分:0)
<?php
$array = array(
1=>array(
1=>'a',
2=>'b'),
2=>array(
1=>'c',
2=>'d'
)
);
foreach($array as $key=>&$val){
for($i=1;$i<=count($val);$i++){
$val['balh'.$i] = $val[$i];
unset($val[$i]);
}
}
print_r($array);
?>
这样你就会传递指针。
Array
(
[1] => Array
(
[balh_1] => a
[balh_2] => b
)
[2] => Array
(
[balh_1] => c
[balh_2] => d
)
)
这将是输出
答案 1 :(得分:0)
<?php
$data_1 = array(array(0, 'test', 'test1'), array(0, 'test', 'test1'));
foreach ( $data_1 as $k => $v ){
$data_1[$k]['bla0'] = $data_1[$k][0];
$data_1[$k]['bla1'] = $data_1[$k][1];
$data_1[$k]['bla2'] = $data_1[$k][2];
unset($data_1[$k][0]);
unset($data_1[$k][1]);
unset($data_1[$k][2]);
}
echo '<pre>'; print_r($data_1);
答案 2 :(得分:0)
正如评论中指出的那样,最可能的解释是你的一些子数组不包含6个元素。
如果这是有效且有意的(你打算让一些子数组包含少于6个元素),那么建议你的代码在每个数组中处理可变数量的元素。
这样的事可能适合你;
foreach ($data_1 as &$subArray) {
foreach (array_keys($subArray) as $k) {
$subArray["bla$k"] = $subArray[$k];
unset($subArray[$k]);
}
}
答案 3 :(得分:0)
您的代码可以正常工作。问题是你没有检查子数组的长度,或者在尝试处理它之前该元素是否存在。
通过子阵列自动循环更好,因此您不必为较短的子阵列显式调用不存在的索引。
<?php
foreach ($data_1 as $key => $val) {
foreach(array_keys($val) as $i) {
$data_1[$key]["bla{$i}"] = $data_1[$key][$i];
unset($data_1[$key][$i]);
}
}
?>
答案 4 :(得分:0)
这将解决您的问题
<?php
$data_1 = array(
'1' => array(
0 => '0',
1 => 'TEST1',
2 => 'TEST12',
3 => 'TEST13'),
'2' => array(
0 => '0',
1 => 'TEST2',
2 => 'TEST22',
3 => 'TEST23')
);
foreach ( $data_1 as $k=>$v )
{
$data_1[$k]['bla0'] = $v[0];
$data_1[$k]['bla1'] = $v[1];
$data_1[$k]['bla2'] = $v[2];
$data_1[$k]['bla3'] = $v[3];
unset($data_1[$k][0],$data_1[$k][1],$data_1[$k][2],$data_1[$k][3]);
}
echo '<pre>'; print_r($data_1); echo '</pre>';
?>