首页 > 解决方案 > 如何将元素添加到foreach循环内的高级数组

问题描述

我正在尝试将我的数据添加到我的 foreach 循环中的数组中。

我几乎已经成功了,只是数组太深了。

它显示 array->array->{WHAT I WANT} 当我需要 array->{WHAT I WANT}

例如,我需要它像:

Array
(
[home] => Array
    (
        [0] => Dashboard\Main@index
        [1] => GET
    )

[home/] => Array
    (
        [0] => Dashboard\Main@index
        [1] => GET
    )
)

此刻,它显示:

Array
(
[0] => Array
    (
        [services/content-writing] => Array
            (
                [0] => Dashboard\Services@contentwriting
                [1] => GET
            )

    )

[1] => Array
    (
        [services/pbn-links] => Array
            (
                [0] => Dashboard\Services@pbnlinks
                [1] => GET
            )

    )
)

我目前在 foreach 循环中使用的代码是:

$realArray = array();

// Services exist
if($services)
{
    // Sort them into our array
    foreach ($services as $service) {

        $servicePageName = $service->page_name;
        $serviceName = str_replace(' ', '', strtolower($service->name));

        $realArrayNew = array(
            "services/$servicePageName" => ["Dashboard\Services@$serviceName", 'GET']
        );

        array_push($realArray, $realArrayNew);

        //'home' => ['Dashboard\Main@index', 'GET'],

    }
}

return $realArray;

标签: phparraysforeach

解决方案


servicePageName变量必须是关键字段realArray才能得到你想要的结果。

我假设您输入的对象数组看起来像这样:

[
    (int) 0 => object(stdClass) {
        name => 'contentwriting'
        page_name => 'content-writing'
    },
    (int) 1 => object(stdClass) {
        name => 'pbnlinks'
        page_name => 'pbn-links'
    }
]

如果我们这样做:

$realArray = [];
if ($services) {
    foreach ($services as $service) {
        $servicePageName = $service->page_name;
        $serviceName = str_replace(' ', '', strtolower($service->name));
        $realArray["services/$servicePageName"] = [
            0 => "Dashboard\Services@$serviceName",
            1 => "GET"
        ];
    }
}

这就是我们得到的realArray

[
    'services/content-writing' => [
        (int) 0 => 'Dashboard\Services@contentwriting',
        (int) 1 => 'GET'
    ],
    'services/pbn-links' => [
        (int) 0 => 'Dashboard\Services@pbnlinks',
        (int) 1 => 'GET'
    ]
]

推荐阅读