簡體   English   中英

Function 內同 function PHP

[英]Function inside the same function PHP

我正忙於清理 WordPress parse_blocks() 數組。

數組:解析塊

  • 塊名
  • 屬性
  • 內部塊 (0)

內塊 (0)

  • 塊名
  • 屬性
  • 內塊 (1)

內塊 (1)

  • 塊名
  • 屬性
  • 內塊 (2)

我想要的是制作一個重復每個內部塊的 function。 正如您在上面看到的,數組 Parse 塊具有內部塊,這些塊也可以獲得內部塊(2 次)。

我做了一個簡單的 function cleanBlock($block)

function cleanBlock($block)
{
    if (isset($block['blockName']) && $block['blockName'] != '') {
        $splitType = explode('/', $block['blockName']);
        $innerBlocks = $block['innerBlocks'];
        $block = array(
            'type' => $splitType[1],
            'attrs' => '',
            'innerblocks' => $innerBlocks,
        );
        return $block;
    }
}

在那里你發現“innerblock”我的想法是再次運行 cleanBlock($innerBlocks),但如果我這樣做它不起作用,因為 $block 是在我獲得內部塊之前制作的,很難解釋我希望你知道我的意思是說。

這就是我想要的,但這段代碼根本不起作用:

function cleanBlock($block)
{
    if (isset($block['blockName']) && $block['blockName'] != '') {
        $splitType = explode('/', $block['blockName']);
        $block = array(
            'type' => $splitType[1],
            'attrs' => '',
            'innerblocks' => cleanBlock($block['innerBlocks']),
        );
        return $block;
    }
}

在 function 之后,我制作了最終數組:

$newPDFarray = [];
foreach ($parseBlocks as $key => $group) {
    $block = cleanBlock($group);
    $newPDFarray[] = $block;
}

不知道這是否是正確或簡短的解決方案,但對我來說它有效:

function cleanBlock($block)
{
    if (isset($block['blockName']) && $block['blockName'] != '') {
        $splitType = explode('/', $block['blockName']);

        $innerBlocks = [];
        foreach ($block['innerBlocks'] as $block) {
            $innerBlocks[] = cleanBlock($block);
        }

        $block = array(
            'type' => $splitType[1],
            'attrs' => $block['attrs'],
            'innerBlocks' => $innerBlocks,
        );
        return $block;
    }
}

$newPDFarray = [];
foreach ($parseBlocks as $key => $group) {
    if ($group['blockName'] != '') {
        $questionGroup = cleanBlock($group);
        $newPDFarray[] = $questionGroup;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM