Functional Helpers
Walk Update
array_walk visits each value and can update values by reference.
visit and update
Use `array_walk` when the callback should touch each existing value.
Walk Update
walk_update.php
Replay: real traced execution (multi-file project)
<?php
function prefix_value(&$value, $key, $prefix) {
$value = $prefix . $value;
}
$prefix = "dev-";
$names = ["Ada", "Linus"];
array_walk($names, "prefix_value", $prefix);
$summary = implode(",", $names);
echo "prefix=" . $prefix . "\n";
echo "names=" . $summary . "\n";
<?php
function prefix_value(&$value, $key, $prefix) {
$value = $prefix . $value;
}
$prefix = "qa-";
$names = ["Ada", "Linus"];
array_walk($names, "prefix_value", $prefix);
$summary = implode(",", $names);
echo "prefix=" . $prefix . "\n";
echo "names=" . $summary . "\n";
<?php
function prefix_value(&$value, $key, $prefix) {
$value = $prefix . $value;
}
$prefix = "ops-";
$names = ["Ada", "Linus"];
array_walk($names, "prefix_value", $prefix);
$summary = implode(",", $names);
echo "prefix=" . $prefix . "\n";
echo "names=" . $summary . "\n";
$prefix ← dev-, $names ← Array
6$prefix→ dev- = "dev-"; //@prefix="qa-", "ops-"7$names→ Array = ["Ada", "Linus"];8array_walk($namesArray, "prefix_value", $prefixdev-);9$summary = implode(",", $names);$value ← dev-Ada
pass 1 of 21<?php2function prefix_value(&$valueAda, $key0, $prefixdev-) {3 $value→ dev-Ada = $prefixdev- . $value;4}$value ← dev-Linus
pass 2 of 21<?php2function prefix_value(&$valueLinus, $key1, $prefixdev-) {3 $value→ dev-Linus = $prefixdev- . $value;4}$summary ← dev-Ada,dev-Linus
7$names = ["Ada", "Linus"];8array_walk($namesArray, "prefix_value", $prefixdev-);9$summary→ dev-Ada,dev-Linus = implode(",", $namesArray);1011echo "prefix=" . $prefixdev- . "\n";12echo "names=" . $summarydev-Ada,dev-Linus . "\n";outputprefix=dev- names=dev-Ada,dev-Linus
$prefix ← qa-, $names ← Array
6$prefix→ qa- = "qa-";7$names→ Array = ["Ada", "Linus"];8array_walk($namesArray, "prefix_value", $prefixqa-);9$summary = implode(",", $names);$value ← qa-Ada
pass 1 of 21<?php2function prefix_value(&$valueAda, $key0, $prefixqa-) {3 $value→ qa-Ada = $prefixqa- . $value;4}$value ← qa-Linus
pass 2 of 21<?php2function prefix_value(&$valueLinus, $key1, $prefixqa-) {3 $value→ qa-Linus = $prefixqa- . $value;4}$summary ← qa-Ada,qa-Linus
7$names = ["Ada", "Linus"];8array_walk($namesArray, "prefix_value", $prefixqa-);9$summary→ qa-Ada,qa-Linus = implode(",", $namesArray);1011echo "prefix=" . $prefixqa- . "\n";12echo "names=" . $summaryqa-Ada,qa-Linus . "\n";outputprefix=qa- names=qa-Ada,qa-Linus
$prefix ← ops-, $names ← Array
6$prefix→ ops- = "ops-";7$names→ Array = ["Ada", "Linus"];8array_walk($namesArray, "prefix_value", $prefixops-);9$summary = implode(",", $names);$value ← ops-Ada
pass 1 of 21<?php2function prefix_value(&$valueAda, $key0, $prefixops-) {3 $value→ ops-Ada = $prefixops- . $value;4}$value ← ops-Linus
pass 2 of 21<?php2function prefix_value(&$valueLinus, $key1, $prefixops-) {3 $value→ ops-Linus = $prefixops- . $value;4}$summary ← ops-Ada,ops-Linus
7$names = ["Ada", "Linus"];8array_walk($namesArray, "prefix_value", $prefixops-);9$summary→ ops-Ada,ops-Linus = implode(",", $namesArray);1011echo "prefix=" . $prefixops- . "\n";12echo "names=" . $summaryops-Ada,ops-Linus . "\n";outputprefix=ops- names=ops-Ada,ops-Linus