php数组中的问题使用相同组id中的值替换空值
我尝试用具有该值的数组替换同一组中数组的值 但是它不能正常工作,你可以在下面的代码中看到为什么php数组中的问题使用相同组id中的值替换空值,php,arrays,pointers,Php,Arrays,Pointers,我尝试用具有该值的数组替换同一组中数组的值 但是它不能正常工作,你可以在下面的代码中看到为什么 function trace($val) { echo "pre"; print_r($val); echo "pre"; } $rows = array( array('a'=>'33333','b'=>'#3333','group'=>1), array('a'=>'','b'
function trace($val)
{
echo "pre";
print_r($val);
echo "pre";
}
$rows = array(
array('a'=>'33333','b'=>'#3333','group'=>1),
array('a'=>'','b'=>'','group'=>1),
array('a'=>'','b'=>'','group'=>2),
array('a'=>'5555','b'=>'#werwe','group'=>2)
);
trace($rows);
$oldGroupId = -1;
foreach($rows as &$row)
foreach($row as $column=>$fieldValue)
{
if($row['group']!=$oldGroupId)
${$row['group']}[$column]=0;
if( !is_null( $row[$column] ) )
${$row['group']}[$column]=$row[$column];
//@ in this place try to point to my dynamick variable pointer for change if change value frome previuse all value in array cahnge
$row[$column] = & ${$row['group']}[$column];
}
trace($rows);
?>
输出值:
Array
(
[0] => Array
(
[a] => 33333
[b] => #3333
[group] => 1
)
[1] => Array
(
[a] =>
[b] =>
[group] => 1
)
[2] => Array
(
[a] =>
[b] =>
[group] => 2
)
[3] => Array
(
[a] => 5555
[b] => #werwe
[group] => 2
)
)
Array
(
[0] => Array
(
[a] =>
[b] =>
[group] => 1
)
[1] => Array
(
[a] =>
[b] =>
[group] => 1
)
[2] => Array
(
[a] => 5555
[b] => #werwe
[group] => 2
)
[3] => Array
(
[a] => 5555
[b] => #werwe
[group] => 2
)
)
排列
(
[0]=>阵列
(
[a] =>33333
[b] =>#3333
[组]=>1
)
[1] =>阵列
(
[a] =>
[b] =>
[组]=>1
)
[2] =>阵列
(
[a] =>
[b] =>
[组]=>2
)
[3] =>阵列
(
[a] =>5555
[b] =>#werwe
[组]=>2
)
)
排列
(
[0]=>阵列
(
[a] =>
[b] =>
[组]=>1
)
[1] =>阵列
(
[a] =>
[b] =>
[组]=>1
)
[2] =>阵列
(
[a] =>5555
[b] =>#werwe
[组]=>2
)
[3] =>阵列
(
[a] =>5555
[b] =>#werwe
[组]=>2
)
)
预期值:
Array
(
[0] => Array
(
[a] => 33333
[b] => #3333
[group] => 1
)
[1] => Array
(
[a] => 33333
[b] => #3333
[group] => 1
)
[2] => Array
(
[a] => 5555
[b] => #werwe
[group] => 2
)
[3] => Array
(
[a] => 5555
[b] => #werwe
[group] => 2
)
)
排列
(
[0]=>阵列
(
[a] =>33333
[b] =>#3333
[组]=>1
)
[1] =>阵列
(
[a] =>33333
[b] =>#3333
[组]=>1
)
[2] =>阵列
(
[a] =>5555
[b] =>#werwe
[组]=>2
)
[3] =>阵列
(
[a] =>5555
[b] =>#werwe
[组]=>2
)
)
更新:
如果这不起作用,请告诉我另一种原因 从
$rows = array(
array('a'=>'33333','b'=>'#3333','group'=>1),
array('a'=>'','b'=>'','group'=>1),
array('a'=>'','b'=>'','group'=>2),
array('a'=>'5555','b'=>'#werwe','group'=>2)
);
创建一个临时变量来保存每个组的总体信息
$groups = array();
然后将每个非空值添加到数组中
foreach ($rows as &$row) {
if (!isset($groups[$row['group']])) {
$groups[$row['group']] = array();
}
$groups[$row['group']] += array_filter($row);
}
最后,用组的总体信息替换每一行
foreach ($rows as &$row) {
$row = $groups[$row['group']];
}
输出:从
$rows = array(
array('a'=>'33333','b'=>'#3333','group'=>1),
array('a'=>'','b'=>'','group'=>1),
array('a'=>'','b'=>'','group'=>2),
array('a'=>'5555','b'=>'#werwe','group'=>2)
);
创建一个临时变量来保存每个组的总体信息
$groups = array();
然后将每个非空值添加到数组中
foreach ($rows as &$row) {
if (!isset($groups[$row['group']])) {
$groups[$row['group']] = array();
}
$groups[$row['group']] += array_filter($row);
}
最后,用组的总体信息替换每一行
foreach ($rows as &$row) {
$row = $groups[$row['group']];
}
输出:您能将预期结果添加到原始帖子中吗?我放置了我预期的值您能将预期结果添加到原始帖子中吗?我放置了我预期的值