array,从数组键中提取值,然后组在一起

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

使用sencha touch(对于问题而言并不重要),将数据阵列发送到我的PHP脚本。

["slider3"] => 1 ["toggle3"] => 0 ["text3"] => "text" ["slider8"] => 5 ["toggle8"] => 0 ["text8"] => "text" ["slider11"] => 4 ["toggle11"] => 0 ["text11"] => "text" ["slider4"] => 1 ["toggle4"] => 0 ["text4"] => "text"
您可以看到数组有点“奇怪”,因为没有逻辑标识符(1-> 2-> 3)。取而代之的是输入字段的名称(来自sencha),其中添加到此字符串中。

您在密钥末端看到的数字(3、8、11、4)是“ data”的实际ID。

这就是我卡住的地方。为了进一步处理数据,我想将收到的数组更改为这样的另一个数组:

[0] ["questionid"] => 3 (<- Number on the end of the original key) ["toggle"] => value from toggle3 ["slider"] => value from slider3 ["text"] => value form text3 [1] ["questionid"] => 8 (<- Number on the end of the original key) ["toggle"] => value from toggle8 ["slider"] => value from slider8 ["text"] => value from text8 etc.

或换句话说,我想在新数组中将数据与密钥末端的同一ID分组。
任何人都知道如何解决这个问题?
    

try:

<?php $data = array( "slider3" => 1, "toggle3" => 0, "text3" => "text", "slider8" => 5, "toggle8" => 0, "text8" => "text", "slider11" => 4, "toggle11" => 0, "text11" => "text", "slider4" => 1, "toggle4" => 0, "text4" => "text", ); $newData = array(); foreach ($data as $entryKey => $entry) { if (preg_match('/^(.+?)(\d+)$/', $entryKey, $matches)) { list(, $key, $id) = $matches; if (!isset($newData[$id])) { $newData[$id] = array( 'questionid' => $id ); } $newData[$id][$key] = $entry; } } $newData = array_values($newData); print_r($newData);

php arrays multidimensional-array
2个回答
3
投票
输出

Array
(
    [0] => Array
        (
            [questionid] => 3
            [slider] => 1
            [toggle] => 0
            [text] => text
        )

    [1] => Array
        (
            [questionid] => 8
            [slider] => 5
            [toggle] => 0
            [text] => text
        )

    [2] => Array
        (
            [questionid] => 11
            [slider] => 4
            [toggle] => 0
            [text] => text
        )

    [3] => Array
        (
            [questionid] => 4
            [slider] => 1
            [toggle] => 0
            [text] => text
        )

)

为了避免在结果数组中分配临时分组键,请将参考将每个遇到的组的参考推入结果数组中,然后将孩子推入其中。这样,不需要迭代结果。 demo

array_values()

0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.