为了账号安全,请及时绑定邮箱和手机立即绑定

移动或移动 php 数组键

移动或移动 php 数组键

PHP
呼啦一阵风 2023-06-30 16:09:58
不太确定如何正确表达这一点,但我正在寻找一些帮助来移动/移动数组键,以便顶级数组不包含另一个只有一个项目的数组。基本上是这样的:[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);    }
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

最好修改数组的创建而不是事后更改它。


// 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];

}

&前面使用的$arrreference. 这意味着循环将更改原始数组,因此可以防止临时数组的开销。


micmackusa让我知道另一个使用 的解决方案array_column(),它完全避免了循环。

$array = array_column($array, 0);


查看完整回答
反对 回复 2023-06-30
?
Helenr

TA贡献1780条经验 获得超4个赞

解决这个问题的最好办法就是从源头入手。这看起来像是从数据库接收的数据集,因此您也可以尝试以正确的格式生成它,而不是在收到它后尝试操作该数组。大多数 DAL 都有方法来操作结果集的返回类型。


但是,如果这是不可能的,并且您始终只有一个嵌套元素,则此循环应该可以解决问题。


for($i = 0; $i <= count($array); $i++) {

    $shifted[$i] = $array[$i][0];

}


查看完整回答
反对 回复 2023-06-30
  • 2 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信