Php 如何通过父数组[key]将[key]和[value]与另一个[key]和[value]区分开来?

Php 如何通过父数组[key]将[key]和[value]与另一个[key]和[value]区分开来?,php,arrays,Php,Arrays,我希望这是最好的提问方式。不知道该怎么说。我想有一个本地PHP函数来确定这一点,这让我觉得我在搜索中的措辞可能不是最好的 我想在数组中搜索特定的[key]=>[value] 如果在我的数组中找到该[key]=>[value],我想从其数组父级获取另一个[key]=>[value] 下面是我代码中的示例来解释 示例1: 如果[post_type]=[page],我想从数组[0]中获取[activate_layout]=[value] 示例2: 如果[post_type]=[post],我想从数组[

我希望这是最好的提问方式。不知道该怎么说。我想有一个本地PHP函数来确定这一点,这让我觉得我在搜索中的措辞可能不是最好的

我想在数组中搜索特定的[key]=>[value]

如果在我的数组中找到该[key]=>[value],我想从其数组父级获取另一个[key]=>[value]

下面是我代码中的示例来解释

示例1:

如果[post_type]=[page],我想从数组[0]中获取[activate_layout]=[value]

示例2:

如果[post_type]=[post],我想从数组[1]中获取[activate_layout]=[value]

一般概念示例3:

如果[post_type]=[x],我想从其父数组[x]中获取[activate_layout]=[x]

我的问题是如何通过父数组[key]将[key]和[value]与另一个[key]和[value]区分开来

下面是我的阵列数据的存储方式

[post_type_layouts] => Array
        (
            [0] => Array
                (
                    [context] => Array
                        (
                            [option] => Array
                                (
                                    [activate_layout] => 1
                                    [post_type] => page
                                )

                        )

                )

            [1] => Array
                (
                    [context] => Array
                        (
                            [option] => Array
                                (
                                    [activate_layout] => 1
                                    [post_type] => post
                                )

                        )

                )

        )

如果我真的理解你的问题,我认为解决方法比你现在做的更简单

下面是一个类似数组的示例:

$arrayTest = [
0 => [
    'context' => [
        'option' => [
            'post_type' => 'page',
        ],
    ],
],

1 => [
    'context' => [
        'option' => [
            'post_type' => 'post',
        ],
    ],
],
];
而且,在那里冲浪并获取
post_type
的父值,我只创建一个
foreach
steatment,在这里我使用
switch
steatment检查
post_type
值。是这样的:

foreach ($arrayTest as $subLevel1) {
switch ($subLevel1['context']['option']['post_type']) {
    case 'page':
        $subLevel1['context']['option']['active_layout'] = 0;
        break;

    default:
        $subLevel1['context']['option']['active_layout'] = 1;
        break;
}
print_r($subLevel1);
}
我的报税表与上述样品类似,我认为这可以解决您的问题:

    php -f testArray.php 
    Array
      (
        [context] => Array
          (
            [option] => Array
              (
                [post_type] => page
                [active_layout] => 0
              )
          )
     )
     Array
     (
       [context] => Array
         (
           [option] => Array
             (
               [post_type] => post
               [active_layout] => 1
             )
           )
         )

好代码

需要一个草书函数才能显示出应该如何看最终结果?这会增加你得到快速帮助的机会。下面是一个不使用递归函数的答案。我只需要根据我的需要修改一下,我对批准的答案进行了评论。谢谢这看起来太棒了!!我认为这也很容易以一种更轻松的方式回答我的问题。我将与它玩确认和回答/更新。谢谢!这让我以适当的方式开始了!我需要删除开关case,因为我需要case值是一个Wordpress函数来匹配var,就像这样$post_type=$post_type_布局['context']['option']['post_type'];如果(是单数($post_type)){//此自定义代码…}或者(!是单数($This_post_type)){//此默认代码…}欢迎使用!任何时候,我们所需要的一切都是一个小小的脚踢,把我们带到正确的方向。好代码!