我正在尝试使用函数在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'
)
答案 0 :(得分:0)
我认为这可以解决您的问题:
$layoutData[$key] = $this->$method($data);
答案 1 :(得分:0)
更改
$this->parseOptions($data);
到
$data = $this->parseOptions($data);
解决了问题。 新秀错误。