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];
}
&
前面使用的$arr
是reference
. 这意味着循环将更改原始数组,因此可以防止临时数组的开销。
micmackusa让我知道另一个使用 的解决方案array_column()
,它完全避免了循环。
$array = array_column($array, 0);
TA贡献1780条经验 获得超4个赞
解决这个问题的最好办法就是从源头入手。这看起来像是从数据库接收的数据集,因此您也可以尝试以正确的格式生成它,而不是在收到它后尝试操作该数组。大多数 DAL 都有方法来操作结果集的返回类型。
但是,如果这是不可能的,并且您始终只有一个嵌套元素,则此循环应该可以解决问题。
for($i = 0; $i <= count($array); $i++) {
$shifted[$i] = $array[$i][0];
}
- 2 回答
- 0 关注
- 128 浏览
添加回答
举报