我在PHP中有一个多维数组,并尝试用该数组中的另一个值动态替换值。
这是一个例子:
$data =
array(356) {
[0]=>
array(6) {
[0]=>
string(3) "001"
[1]=>
string(19) "14.04.2018 14:00:00"
[2]=>
string(39) "mJA"
[3]=>
string(26) "JSG Handball"
[4]=>
string(13) "TSG Frankfurt"
[5]=>
string(52) "1410601539 Ground 1"
}
[1]=>
array(6) {
[0]=>
string(3) "001"
[1]=>
string(19) "14.04.2018 14:00:00"
[2]=>
string(48) "wJB"
[3]=>
string(26) "SC Berlin"
[4]=>
string(10) "JSG Handball"
[5]=>
string(44) "1410601105 Ground 2"
}
...
}
我需要实现的是,我想搜索整个数组,并用Array键[x] [2]中的字符串替换字符串“ JSG Handball”的任何发现。因此,在第二个发现中,在我的示例中,“ JSG手球”将替换为“ mJA”,而“ JSG手球”将替换为“ wJB”。
到目前为止,我所取得的成就(感谢这里的出色人士)是用array_walk_recursive进行的静态替换,但是我无法再进一步了。
array_walk_recursive($data, function(&$data) {
if($data == "JSG Handball") {
$data = "Whatever";
}
});
我们非常感谢您的帮助;) 预先感谢!
答案 0 :(得分:0)
使用array_walk_recursive会为您提供每个项目的值和键,但不会为您提供这些键和值所在的当前数组。
您可以做的是使用foreach
的2倍循环数组,并使用&
通过引用传递以更新原始数组。
$data = [
[
"001",
"14.04.2018 14:00:00",
"mJA",
"JSG Handball",
"TSG Frankfurt",
"1410601539 Ground 1",
],
[
"001",
"14.04.2018 14:00:00",
"wJB",
"SC Berlin",
"JSG Handball",
"1410601105 Ground 2"
]
];
foreach ($data as &$d) {
foreach ($d as &$item) {
if ($item === "JSG Handball" && isset($d[2])) {
$item = $d[2];
}
}
}
print_r($data);