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

从字符串创建数组 - PHP

从字符串创建数组 - PHP

PHP
回首忆惘然 2023-09-22 16:57:13
我有一个字符串,我需要从中获取关联数组。我可以自由地将字符串修改为看起来像数组,但我仍然无法从中获取数组。我尝试过explode、json等。 $string = $row->id . ',' . $row->title . ',';// 1,Home,3,Services,6,Service 1,7,Service 2,2,Products例子    public function Menu($parent = null) {$query = $this->menuManager->getPublicMenus()->where('parent', null)->order('sort_order');        if ($this->menuManager->getPublicMenus()->count() > 0) {            $menu = '';            foreach ($query as $row) {                $menu .= $row->id . ',' . $row->title . ',';                $menu .= $this->Menu($row->id);            }            return $menu;        }    }我需要输出:array1 => "Home"3 => "Services"6 => "Service 1"7 => "Service 2"2 => "Products"
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

如果您必须使用该字符串。


$input = '1,Home,3,Services,6,Service 1,7,Service 2,2,Products';


$keysAndValues = explode(',', $input);


$result = [];

$count = count($keysAndValues);

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

    $key = $keysAndValues[$i];

    $value = $keysAndValues[$i+1];

    

    $result[$key] = $value;

}

工作示例

输出

array(5) {

    [1]=>

    string(4) "Home"

    [3]=>

    string(8) "Services"

    [6]=>

    string(9) "Service 1"

    [7]=>

    string(9) "Service 2"

    [2]=>

    string(8) "Products"

}

我看到你添加了一个例子。要获取数组,在 Menu 方法中执行此操作要干净得多:


$menu = [];

foreach ($query as $row) {

    $menu[$row->id] = [

        'title' => $row->title,

        'children' => $this->Menu($row->id)

    ];

}

return $menu;


查看完整回答
反对 回复 2023-09-22
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

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