Php 如何将索引数组值分配给多维数组?

Php 如何将索引数组值分配给多维数组?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我想用一个简单的数字索引数组的值替换多维数组的值。每个数组中的值数相等,但由于数组结构不同,它们的键/索引不同 我有一个使用array\u combine、迭代和哈希表的工作解决方案,但无法重新创建我的工作。我尝试了array\u merge,array\u combine,并在数组中循环 $venue_ids = array( 0 => array( 0 => 2476 ), 1 => array( 0 =

我想用一个简单的数字索引数组的值替换多维数组的值。每个数组中的值数相等,但由于数组结构不同,它们的键/索引不同

我有一个使用
array\u combine
、迭代和哈希表的工作解决方案,但无法重新创建我的工作。我尝试了
array\u merge
array\u combine
,并在数组中循环

$venue_ids = array( 
    0 => array(
        0 => 2476 ), 
        1 => array( 
            0 => 2482,
            1 => 2480,
            2 => 2463 ),
        2 => array( 
            0 => 2484,
            1 => 2476,
            2 => 2486,
            3 => 2463 ));

$names = array( 
    0 => 'clubhouse',
    1 => 'campground',
    2 => 'lake',
    3 => 'range',
    4 => 'trfields',
    5 => 'clubhouse',
    6 => 'trfields',
    7 => 'range' );
我希望结果保持第一个数组的结构,并简单地用第二个数组的值替换它的值。应该是这样的:

$venues = array( 
    0 => array( 
        0 => 'clubhouse' ), 
    1 => array( 
        0 => 'campground',
        1 => 'lake',
        2 => 'range' ),
    2 => array( 
        0 => 'trfields',
        1 => 'clubhouse',
        2 => 'trfields',
        3 => 'range' ));

$vention\u id
的配置将发生变化,包括索引的数量和其中的键/值的数量,但始终会有1对1数量的
$names
相匹配。我很乐意替换值或构造一个与
$VICEONES\u id
结构匹配的全新数组,然后使用它。

您可能应该问一个关于查询的新问题,看看是否可以得到正确的结果,但在此期间,您可以使用
array\u walk\u recursive
替换这些值:

array_walk_recursive($venue_ids, function (&$v) use (&$names) { $v = array_shift($names); });
print_r($venue_ids);
输出:

Array
(
    [0] => Array
        (
            [0] => clubhouse
        )    
    [1] => Array
        (
            [0] => campground
            [1] => lake
            [2] => range
        )    
    [2] => Array
        (
            [0] => trfields
            [1] => clubhouse
            [2] => trfields
            [3] => range
        )    
)

这个“问题”似乎是编程不好造成的。我想知道您是如何让
$names
$vention\u id
中的ID很好地匹配的?我知道你想让我们解决这个问题,没有问题,但我不得不问。毫无疑问!最后,我从一个SQL查询得到了post_id,然后是一个meta_查询,从链接的post类型和分类中获取其余信息。除其他外,原始输出是每个场馆的post_id(自定义post类型)。我能找到的唯一方法是通过数据库获取这些数字并获得匹配的post_标题,那就是对meta_查询进行预处理,并将其提取到该键的post_id的简单数组中。我确信这就是我出错的地方,但我无法找出如何在不破坏阵列的情况下获得结果。如果您无法保留您的工作解决方案,至少请尝试重新创建您的工作。我确信这很困难。但是,如果你能从数据库中获得场馆的ID,那么你不能也不能从数据库中获得场馆的名称吗?从而直接从数据库创建所需的阵列?完全同意!我必须操纵相关但无用的数据,才能得到我想要的东西,而这些数据可能就在隔壁。当然有一种方法可以避免达到我的目的,但我只能考虑编写一个自定义查询,该查询得到的结果与get_post_meta不同。。。或者更可能的情况是,在值仍然位于原始数组中时,找出如何通过get_posts或get_the_title来运行这些值。如果我第一次遇到麻烦的时候问过我,我的额头上的瘀伤会少一些,但有时候一旦你开始了,你就很容易陷入困境。同意最初的问题,但不管怎样,谢谢你的解决方案!如果这就是解决问题的方法,我很高兴我提出了这个问题,因为它与我一直在修补的东西相差甚远。埃塔:不用说,它工作得很好。谢谢大家!@fxrgc您仍然可以接受这个答案作为最佳答案,这相当于+1票。PS:如果你不明白为什么这个答案是这样的,那么你应该问。问我认为措辞得体的问题已经让我得了a-1,可能是因为我没有提供数百行注释尝试来解决一个充满四个字母的变量名的问题,我必须编辑以使其适合工作。但坦率地说,我对提供的代码完全陌生,我很好奇它是如何工作的,为什么工作,为什么我尝试过的几十次搜索没有让我找到这个函数,但我不知道从哪里开始,因为我还不能阅读我认为是php速记的代码。@fxrgc:你可以在手册中查找。它使用回调函数递归地遍历提供的数组。它获取数组项,因此
&
位于
$v
前面。这基本上意味着,在这种情况下,函数可以改变原始值。然后
array\u shift()
吃掉
$names
开头的条目,并将它们放入
$vention\u ids
@fxrgc抱歉,我不想解释代码,我认为KIKO给出了一个很好的解释。如果您还有问题,请再次评论。