【发布时间】:2019-03-09 14:20:34
【问题描述】:
我正在尝试使用函数修改 foreach 循环内的多维数组。 但是,当我使用 print_r() 检查结果时,结果不是我想要的,而且我也没有收到任何错误。
foreach ($layoutData as $key => $data) {
$method = $data[ 'acf_fc_layout' ];
if (method_exists($this, $method)) {
$data = $this->$method($data);
}
$this->parseOptions($data);
}
注意:foreach 位于一个名为 layouts() 的函数中。我认为这无关紧要,所以我把它省略了。
public function parseOptions($data) {
if (isset($data[ 'padded' ])) {
if ($data[ 'padded' ] == 'true') {
$data[ 'options' ][ 'padded' ] = true;
} else {
$data[ 'options' ][ 'padded' ] = false;
}
unset($data[ 'padded' ]);
}
if (isset($data[ 'background-color' ])) {
$data[ 'options' ][ 'background-color' ] = $data[ 'background-color' ];
if ($data[ 'options' ][ 'background-color' ] == 'white') {
$data[ 'options' ][ 'background-color' ] = false;
}
unset($data[ 'background-color' ]);
}
return $data;
}
print_r() 结果:
Array
(
[view] => signup
[data] => Array
(
[acf_fc_layout] => signup
[title] => Schrijf je snel in
[text] => Kickstarten begint met aanmelden. Doe het snel, dan maak je kans op een Samsung Galaxy S9.
)
[padded] => 'true'
[background-color] => 'dark-grey'
)
但我想要实现的是:
Array
(
[view] => signup
[data] => Array
(
[acf_fc_layout] => signup
[title] => Schrijf je snel in
[text] => Kickstarten begint met aanmelden. Doe het snel, dan maak je kans op een Samsung Galaxy S9.
)
[options] => Array
(
[padded] => 'true'
[background-color] => 'dark-grey'
)
【问题讨论】:
-
在运行 foreach 时,
$data变量只是原始值的 副本。更改不会更改原始数组。上面的链接应该为您提供有关您需要做什么的更多信息。也解释了in the manual about foreach
标签: php arrays function multidimensional-array foreach