Laravel 将输入名称数组转换为点号表示法

3

如何将输入名称数组转换为点符号表示法,类似于验证器处理键的方式?我希望它也可以适用于非数组。

例如,假设我有:

$input_name_1 = 'city';
$input_name_2 = 'locations[address][distance]';

我该如何将它转换为:

$input_dot_1 = 'city';
$input_dot_2 = 'locations.address.distance';

2
你尝试过什么?Stackoverflow不是一个代码编写服务;我们期望你自己努力解决问题,我们会协助调试。 - Tim Lewis
Laravel有相应的方法。它被称为array_get(),反向方法是array_set()。模式在这里:https://dev59.com/kGkw5IYBdhLWcg3wzdtF#39118759 - Autista_z
不确定为什么这个问题会引起如此多的厌恶。它昨天出现在我的面前,不幸的是这篇帖子上还没有有用的答案。我已经把我得出的解决方案作为一个答案添加了进去。 - benjaminhull
2个回答

5
如果我们只是在讨论转换字符串表示形式,例如将字符串转换为以下形式...
  • 'foo[1]' -> 'foo.1'
  • 'foo[bar]' -> 'foo.bar'
  • 'foo[bar][baz]' -> 'foo.bar.baz'
下面的代码可以很好地实现这一点...
$string = str_replace('[', '.', $string); // Replace [ with .
$string = str_replace(']', '', $string); // Remove ]

注意:我在Laravel框架中无法找到使用现有的Laravel类/方法来实现这一点的方法 - 但是如果有方法,我很想知道。


-2
这里有一个提示,你可以删除]并将[替换为一个点号:

伪代码:

$input_name_2 = 'locations[address][distance]';
$halfway = removeClosingBracket($input_name_2); // locations[address[distance
$result = replaceOpeningBracektWithDot($halfway); // locations.address.distance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接