codeigniter中的array_push

时间:2016-07-05 12:07:36

标签: php arrays codeigniter

控制器

save_dial

每次函数$data运行时,它都会创建一个新数组并将数组save_dial推入其中。我想要做的是每次运行$mainstack时,它只会将新数组推送到现有数组will-change:transform,而不是将其推送到新数组中。有人可以帮我吗?



使用array_push打印的值

Array
(
    [applet] => Flow
    [0] => Array
        (
          //data
        )

)
Array
(
    [applet] => Flow
    [0] => Array
        (
          //data
        )

)

我想要打印

`

Array
(
    [applet] => Flow
    [0] => Array
        (
          //data
        )
    [1] => Array
        (
          //data
        )

)

2 个答案:

答案 0 :(得分:0)

使用$mainstack时,您在array_push()数组中添加了一个数组。结果将类似于:

'applet' => "Flow",
0 => $data,  // contents of $data the first time $data was added
1 => $data   // contents of $data the second time $data was added
// etc.

您可能需要here(或合并)之类的内容:

function pushflow($data)
{
    # Use $data elements where duplicate keys exist
    $this->mainstack =  $data + $this->mainstack;
    avb_print_r($this->mainstack);
}

现在,您的$data数组将添加到原始数组中,现有的键/值将替换为$data中的值。

答案 1 :(得分:0)

这应该可以解决问题(使用array_merge代替array_push):

function pushflow($data)
{       
    $this->mainstack = array_merge($this->mainstack, $data);
    avb_print_r($this->mainstack);
}

array_push的作用是,它为现有数组添加一个新元素(或多个元素),因此如果你的元素是一个数组,你最终会得到一个多维数组。如果您仍然使用array_push,则必须迭代$ data,逐个推送每个元素,或修改save_dial()方法为您想要的每个元素调用pushflow()添加,而不是将其添加到$data

  

更新

请注意以下代码:

class SimpleClass
{
public $mainstack = array(
    'applet' => "Flow"
);

function pushflow($data)
{       
    $this->mainstack = array_merge($this->mainstack, $data);
    echo '<pre>' . print_r($this->mainstack, true) . '</pre>';
}

public function save_dial()
{
    $data = array(
        'applet' => "Dial",
        'dial_whom' => 'selecteddialnum',
        'selected_caller' => 'scaller',
        'selected_whisper' => 'swhisper'
    );
    $this->pushflow($data);
}
}
$a = new SimpleClass();
$a->save_dial();

,会产生这样的结果:

Array
(
    [applet] => Dial
    [dial_whom] => selecteddialnum
    [selected_caller] => scaller
    [selected_whisper] => swhisper
)

如果不是您想要获得的格式,请通过示例说明。