移动或移动 php 数组键

不太确定如何正确表达这一点,但我正在寻找一些帮助来移动/移动数组键,以便顶级数组不包含另一个只有一个项目的数组。基本上是这样的:


[0] => Array

    (

        [0] => Array

            (

                [_id] => 3

                [title] => Award winning wedding venue

                [subtitle] => Creating a website to reflect the prestige of the brand

            )


    )


[1] => Array

    (

        [0] => Array

            (

                [_id] => 5

                [title] => Bringing storytelling to life

                [subtitle] => Bringing storytelling to life

            )


    )

像这样:


[0] => Array

    (

        [_id] => 3

        [title] => Award winning wedding venue

        [subtitle] => Creating a website to reflect the prestige of the brand

    )


[1] => Array

    (

        [_id] => 5

        [title] => Bringing storytelling to life

        [subtitle] => Bringing storytelling to life

    )

几乎只是将数组键向上移动一位。


原始数组是使用以下命令创建的:


// Start with manual relation otherwise default to next/prev    

    foreach ($item['related'] as $id) {

      

      $related[] = perch_collection('Projects', [

        'filter' => [

          [

            'filter' => '_id',

            'match'  => 'eq',

            'value'  => $id,

          ],

            // Item is enabled

          [

            'filter' => 'status',

            'match' => 'eq',

            'value' => 'enabled',

          ],

        ],

        'skip-template' => true,

      ], true);

    }


呼啦一阵风
浏览 129回答 2
2回答

呼唤远方

最好修改数组的创建而不是事后更改它。// Start with manual relation otherwise default to next/prev    foreach ($item['related'] as $id) {      $related[] = perch_collection('Projects', [        'filter' => [            [                'filter' => '_id',                'match'  => 'eq',                'value'  => $id,            ],            // Item is enabled            [                'filter' => 'status',                'match' => 'eq',                'value' => 'enabled',            ],        ],        'skip-template' => true,  ], true)[0];}请注意函数调用[0]末尾的perch_collection()。这基本上与我答案的第二部分相同,只是发生得更早。话虽如此,如果在创建原始数组后仍想更改它,则可以使用一个简单的 foreach 循环并引用原始数组。foreach($array as &$arr) {    $arr = $arr[0];}&前面使用的$arr是reference. 这意味着循环将更改原始数组,因此可以防止临时数组的开销。micmackusa让我知道另一个使用 的解决方案array_column(),它完全避免了循环。$array = array_column($array, 0);

Helenr

解决这个问题的最好办法就是从源头入手。这看起来像是从数据库接收的数据集,因此您也可以尝试以正确的格式生成它,而不是在收到它后尝试操作该数组。大多数 DAL 都有方法来操作结果集的返回类型。但是,如果这是不可能的,并且您始终只有一个嵌套元素,则此循环应该可以解决问题。for($i = 0; $i <= count($array); $i++) {&nbsp; &nbsp; $shifted[$i] = $array[$i][0];}
打开App,查看更多内容
随时随地看视频慕课网APP