Return 包含来自多维数组的自定义键的块

Return block with custom key from multidimensional array

从多维数组我必须return只有这个有键“widget_section”的块,我试过array_key_exists函数但它不起作用。现在我可以 return 使用特定名称进行阻止。但是如果有数组“widget_section”并且值设置为 1

,我就无法阻止
        $blocks = parse_blocks( $post->post_content );
        foreach( $blocks as $block ) {
          if( 'acf/home-block-alert' === $block['blockName'] ) {
            echo render_block( $block );
          }
        }

我的阵列

  [8]=>
  array(5) {
    ["blockName"]=>
    string(20) "acf/home-block-alert"
    ["attrs"]=>
    array(4) {
      ["id"]=>
      string(19) "block_5eecadb49bb7c"
      ["name"]=>
      string(20) "acf/home-block-alert"
      ["data"]=>
      array(4) {
        ["alert_box"]=>
        string(445) "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
        ["_alert_box"]=>
        string(19) "field_5eecacb7c30b3"
        ["widget_section"]=>
        string(1) "1"
        ["_widget_section"]=>
        string(19) "field_5ef5be51d1ce2"
      }
      ["mode"]=>
      string(4) "edit"
    }
    ["innerBlocks"]=>
    array(0) {
    }
    ["innerHTML"]=>
    string(0) ""
    ["innerContent"]=>
    array(0) {
    }
  }

如何处理?

您需要做的就是验证数组中的每个块是否 $block['attrs']['data']['widget_section'] isset()。如果是,存储数组,如下:

$store = [];
foreach($blocks as $block) {
    if(isset($block['attrs']['data']['widget_section'])) {
        $store[] = $block;
    }
}

工作demo