使用PHP

时间:2015-06-02 08:12:09

标签: php arrays laravel

我有一个我需要格式化为单个数组的数组。我目前的功能很好,因为我无法弄清楚如何为ID设置自定义键。该数组用于填充选择框,因此我需要该ID。我花了几个小时搞乱它,在格式化数组时我只是迷失了。

我需要输出使用自定义键(例如$ row-> id),它会输出如下内容:

[40 =>'Florida', 50 =>'CA', 33 => 'NY']

现在输出像..

[0 =>'Florida', 1 =>'CA', 2 => 'NY']

这是我目前的职能:

protected function createRegionList($parent_id = '0', $spacing = '')
{

    $arr = [];
    foreach ($this->getByParentId($parent_id) as $row) {
        $arr[] = $spacing . ' ' . $row->title;
        $arr = array_merge($arr, $this->createRegionList($row->id, ' ' . $spacing . '—'));
    }
    return $arr;

}

非常感谢任何帮助或建议。我找到了一堆例子,但它们是更多维的数组,我需要将输出作为单个数组。

1 个答案:

答案 0 :(得分:1)

您可以通过在括号中指定键来设置数组项键。请参阅PHP docs

试试这个

$arr[$row->id] = $spacing . ' ' . $row->title;

array_merge不保留密钥。使用array_replace

或者只是将这些结合在一起

$arr = [];
foreach ($this->getByParentId($parent_id) as $row) {
    $arr[] = $spacing . ' ' . $row->title;
    $childs = $this->createRegionList($row->id, ' ' . $spacing . '—');
    $arr = $childs + $arr;
}
return $arr;