Как изменить массив с помощью функции в цикле foreach? - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь изменить многомерный массив внутри цикла 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 находится внутри функции, называемой макетами().Я подумал, что это не имеет значения, поэтому я пропустил это.

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'
            )

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Изменение

$this->parseOptions($data);

на

 $data = $this->parseOptions($data);

Решена проблема.Ошибка новичка.

0 голосов
/ 04 октября 2018

Я думаю, что это решит вашу проблему:

$layoutData[$key] = $this->$method($data);
...