通过副本传递的PHP数组
我试图永久重置数组中每个学生的平均分数,但没有运气。我使用&运算符将包含所有学生的数组传递给我的函数,以便通过引用传递。我运行重置平均标记的函数,并在表中打印结果,并指示平均标记已在方法内重置。然后在方法外部的数组上调用var_dump(),检查更改是否仍然有效。var_dump()的输出显示未更改的平均标记:'(。如有任何帮助,将不胜感激通过副本传递的PHP数组,php,arrays,Php,Arrays,我试图永久重置数组中每个学生的平均分数,但没有运气。我使用&运算符将包含所有学生的数组传递给我的函数,以便通过引用传递。我运行重置平均标记的函数,并在表中打印结果,并指示平均标记已在方法内重置。然后在方法外部的数组上调用var_dump(),检查更改是否仍然有效。var_dump()的输出显示未更改的平均标记:'(。如有任何帮助,将不胜感激 ID Name Surname Address Telephone Average 123345(M) Roger Fe
ID Name Surname Address Telephone Average
123345(M) Roger Fenech USA 21212121 0
835392(M) Chris Tabone UK 21456780 0
693648(M) Thomas Grech Spain 21854595 0
483582(M) Michael Abela Turkey 24872639 0
742652(M) Stan Galea France 21951357 0
var_dump():
代码:
PHP测试
表{文本对齐:居中}
您还需要在foreach
循环中使用引用:
否则,
$student
是数组元素的副本,因此unset($student[“Average”])
只影响副本,而不影响原始数组。您还需要在foreach
循环中使用引用:
否则,
$student
是数组元素的副本,因此unset($student[“Average”])
只影响副本,而不影响原始数组。您还需要通过引用传递$student
数组:foreach($student as&$student)
,否则迭代时将复制每个学生数组。您还需要通过引用传递$student
数组:foreach($students as&$student)
,否则迭代时将复制每个学生数组
array(5) { [0]=> array(6) { ["ID"]=> string(9) "123345(M)" ["Name"]=> string(5) "Roger" ["Surname"]=> string(6) "Fenech" ["Address"]=> string(3) "USA" ["Telephone"]=> int(21212121) ["Average"]=> int(100) } [1]=> array(6) { ["ID"]=> string(9) "835392(M)" ["Name"]=> string(5) "Chris" ["Surname"]=> string(6) "Tabone" ["Address"]=> string(2) "UK" ["Telephone"]=> int(21456780) ["Average"]=> int(78) } [2]=> array(6) { ["ID"]=> string(9) "693648(M)" ["Name"]=> string(6) "Thomas" ["Surname"]=> string(5) "Grech" ["Address"]=> string(5) "Spain" ["Telephone"]=> int(21854595) ["Average"]=> int(60) } [3]=> array(6) { ["ID"]=> string(9) "483582(M)" ["Name"]=> string(7) "Michael" ["Surname"]=> string(5) "Abela" ["Address"]=> string(6) "Turkey" ["Telephone"]=> int(24872639) ["Average"]=> int(88) } [4]=> array(6) { ["ID"]=> string(9) "742652(M)" ["Name"]=> string(4) "Stan" ["Surname"]=> string(5) "Galea" ["Address"]=> string(6) "France" ["Telephone"]=> int(21951357) ["Average"]=> int(76) } }
<html>
<head>
<title>PHP Test</title>
</head>
<style type="text/css">
table{text-align: center}
</style>
<body>
<?php
$students = array
(
array(
'ID' => '123345(M)',
'Name' => 'Roger',
'Surname' => 'Fenech',
'Address' => 'USA',
'Telephone' => 21212121,
'Average' => 100
),
array(
'ID' => '835392(M)',
'Name' => 'Chris',
'Surname' => 'Tabone',
'Address' => 'UK',
'Telephone' => 21456780,
'Average' => 78
),
array(
'ID' => '693648(M)',
'Name' => 'Thomas',
'Surname' => 'Grech',
'Address' => 'Spain',
'Telephone' => 21854595,
'Average' => 60
),
array(
'ID' => '483582(M)',
'Name' => 'Michael',
'Surname' => 'Abela',
'Address' => 'Turkey',
'Telephone' => 24872639,
'Average' => 88
),
array(
'ID' => '742652(M)',
'Name' => 'Stan',
'Surname' => 'Galea',
'Address' => 'France',
'Telephone' => 21951357,
'Average' => 76
)
);
function resetAverage(&$students){
echo "<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Surname</th>
<th>Address</th>
<th>Telephone</th>
<th>Average</th>
</tr>" ;
foreach ($students as $student) {
echo "<tr>";
unset($student["Average"]);
$student["Average"] = 0;
foreach ($student as $key => $value) {
echo "<td>" . $value . "</td>";
}
echo '</tr>';
}
echo "</table>";
}
resetAverage($students);
echo "<pre>" . var_dump($students) . "</pre>";
?>
</body>
</html>
foreach ($students as &$student) {