如何将已经被推送到另一个数组的数据推送到另一个数组?

问题描述 投票:0回答:3

有没有办法可以将

$dialstack
插入到
$menustack
之后
menustack
放入
$mainstack
内部?

我想要的结果可以通过将

array_push($mainstack, $menustack);
移动到最后一行来实现,但我真的在寻找一种可以将数组插入到现有数组堆栈中的方法。

$mainstack = ['applet' => "Flow"];

$menustack = ['applet' => "Menu", 'repeat' => "2"];

$dialstack = [];

$dial1 = ['applet' => "Dial", 'number' => "165465468", 'whisper' => "Yes"];
$dial2 = ['applet' => "Dial", 'number' => "654984", 'whisper' => "No"];
$dial3 = ['applet' => "Dial", 'number' => "398965165", 'whisper' => "Yes"];

array_push($mainstack, $menustack);
array_push($dialstack, $dial1);
array_push($dialstack, $dial2);
array_push($dialstack, $dial3);
array_push($menustack, $dialstack);
php arrays multidimensional-array reference array-push
3个回答
3
投票

你只需要知道 $menustack 在 $mainstack 中的索引

$arrayOne = [];
$arrayTwo = [];
$arrayThree = [];

// $arrayOne goes inside of $arrayTwo
array_push($arrayTwo, $arrayOne);

// $arrayThree goes inside of $arrayTwo[0] which is $arrayOne
array_push($arrayTwo[0], $arrayThree);

var_dump($arrayTwo);

1
投票
array_push($mainstack,array_merge($menustack,$dialstack));
print_r($mainstack);

首先使用 array_merge 合并两个数组,然后将它们推入

$mainstack


0
投票
仅当您想要将多个条目推送到先前声明的数组中时,

array_push()
才有独特的帮助。 当您想要将引用推入数组或想要将项目推入尚未声明的数组时,它尤其没有帮助。 因此,我建议您不要在两个地方使用
array_push()
,并且仅在向数组添加多个项目时使用
array_push()

通过引用将

$menustack
推入
$mainstack
,您无需记住/猜测/计算所需的索引,以便稍后为其分配更多数据。
$menustack[]
允许您将附加条目推入其在
$mainstack
数组中的相对位置。 演示

$mainstack[] = &$menustack;
array_push($dialstack, $dial1, $dial2, $dial3);
$menustack[] = $dialstack;
var_export($mainstack);

输出:

array (
  'applet' => 'Flow',
  0 => 
  array (
    'applet' => 'Menu',
    'repeat' => '2',
    0 => 
    array (
      0 => 
      array (
        'applet' => 'Dial',
        'number' => '165465468',
        'whisper' => 'Yes',
      ),
      1 => 
      array (
        'applet' => 'Dial',
        'number' => '654984',
        'whisper' => 'No',
      ),
      2 => 
      array (
        'applet' => 'Dial',
        'number' => '398965165',
        'whisper' => 'Yes',
      ),
    ),
  ),
)
© www.soinside.com 2019 - 2024. All rights reserved.