Php将字符串转换为组的数组?
我在字符串上有一个组,我想按组和子组分解 比如说Php将字符串转换为组的数组?,php,multidimensional-array,explode,string-function,Php,Multidimensional Array,Explode,String Function,我在字符串上有一个组,我想按组和子组分解 比如说 operation.user.add operation.user.edit operation.permission.add performance.tool.add performance.tool.remove operation.permission.edit operation.tool.delete operation.tool.remove 结果如下: Array ( ['operation'] => Array (
operation.user.add
operation.user.edit
operation.permission.add
performance.tool.add
performance.tool.remove
operation.permission.edit
operation.tool.delete
operation.tool.remove
结果如下:
Array
(
['operation'] => Array
(
['user'] => Array
(
[0] => 'add',
[1] => 'edit'
),
['permission'] => Array
(
[0] => 'add',
[1] => 'edit'
),
['tool'] => Array
(
[0] => 'delete',
[1] => 'remove'
),
),
['performance'] => Array
(
['tool'] => Array
(
[0] => 'add',
[1] => 'remove'
)
)
)
有人能给出我如何将字符串转换成数组的解决方案吗 假设这是一个字符串值,这可能是您所能得到的最有效的:
$str = 'operation.user.add
operation.user.edit
operation.permission.add
performance.tool.add
performance.tool.remove
operation.permission.edit
operation.tool.delete
operation.tool.remove';
$output = [];
foreach (explode("\n", $str) as $string) {
$parts = explode('.', $string);
$output[$parts[0]][$parts[1]][] = $parts[2];
}
print_r($output);
输出:
Array
(
[operation] => Array
(
[user] => Array
(
[0] => add
[1] => edit
)
[permission] => Array
(
[0] => add
[1] => edit
)
[tool] => Array
(
[0] => delete
[1] => remove
)
)
[performance] => Array
(
[tool] => Array
(
[0] => add
[1] => remove
)
)
)
如果您将字符串存储到一个数组中,那么您可以像下面这样做
<?php
$string = [
"operation.user.add",
"operation.user.edit",
"operation.permission.add",
"performance.tool.add",
"performance.tool.remove",
"operation.permission.edit",
"operation.tool.delete",
"operation.tool.remove",
];
$result = [];
for( $i = 0; $i < count( $string ); $i++ ) {
$parts = explode( '.', $string[$i] );
$result[$parts[0]][$parts[1]][] = $parts[2];
}
echo '<pre>';
print_r($result);
echo '</pre>';
谢谢Nick的回答。这只是一个字符串解析器。你们有并没有试着自己做点什么?我试过foreach循环,如果条件,但想做的是有效的方法是一个字符串还是一个字符串数组?并没有来自数据库的不同字符串。我正在使用3级组的权限。谢谢您的快速回复。它的不同字符串不是单个字符串。让我试试这个解决方案,too@viralchampanery如果它是一个字符串数组(比如称为
$array
),只需将第一个foreach
更改为foreach($array as$string)
@viralchampanery如果对您有效,请将其标记为您的答案。要感谢某人的答案,只需接受即可(向上/向下投票按钮下方的复选标记)。看到了吗?我没有意识到这一点。谢谢您的指导@Nick
Array
(
[operation] => Array
(
[user] => Array
(
[0] => add
[1] => edit
)
[permission] => Array
(
[0] => add
[1] => edit
)
[tool] => Array
(
[0] => delete
[1] => remove
)
)
[performance] => Array
(
[tool] => Array
(
[0] => add
[1] => remove
)
)
)
$str = 'operation.user.add
operation.user.edit
operation.permission.add
performance.tool.add
performance.tool.remove
operation.permission.edit
operation.tool.delete
operation.tool.remove';
$output = [];
foreach (explode("\n", $str) as $string) {
$parts = explode('.', $string);
$output[$parts[0]][$parts[1]][] = $parts[2];
}
print_r($output);