如何在php中将字符串转换为数组
如何在PHP中将字符串转换为数组?我有一根这样的线:如何在php中将字符串转换为数组,php,Php,如何在PHP中将字符串转换为数组?我有一根这样的线: $str = "php/127/typescript/12/jquery/120/angular/50"; 输出: Array ( [php]=> 127 [typescript]=> 12 [jquery]=> 120 [angular]=> 50 ) 一种方法可能是使用preg\u match\u all分别从路径中提取键和值。然后,使用array\u com
$str = "php/127/typescript/12/jquery/120/angular/50";
输出:
Array (
[php]=> 127
[typescript]=> 12
[jquery]=> 120
[angular]=> 50
)
一种方法可能是使用
preg\u match\u all
分别从路径中提取键和值。然后,使用array\u combine
构建hashmap:
$str = "php/127/typescript/12/jquery/120/angular/50";
preg_match_all("/[^\W\d\/]+/", $str, $keys);
preg_match_all("/\d+/", $str, $vals);
$mapped = array_combine($keys[0], $vals[0]);
print_r($mapped[0]);
这张照片是:
Array
(
[0] => php
[1] => typescript
[2] => jquery
[3] => angular
)
您可以使用
preg\u match\u all
(正则表达式)和array\u combine
:
使用的正则表达式:([^\/]*?)\/(\d+)
,eplanation
演示(包括步骤):您可以使用explode()
和for()
循环,如下所示:-
<?php
$str = 'php/127/typescript/12/jquery/120/angular/50';
$list = explode('/', $str);
$list_count = count($list);
$result = array();
for ($i=0 ; $i<$list_count; $i+=2) {
$result[ $list[$i] ] = $list[$i+1];
}
print_r($result);
?>
此处演示:-这是否回答了您的问题?由于这是封闭的,我把一个简单的PHP方式作为上述方式的答案。看一下
分割成段,然后循环增加2。
。我想知道为什么所有人都在玩昂贵的正则表达式,而它是一个简单的for循环。@Markus Zeller我给出的是你的评论&结果就要来了,那么为什么我要放弃投票而不是放弃投票?@KUMAR我在写我的答案时没有看到你的答案。我没有投反对票。顺便说一句,您需要count()-1。当您过快地发布错误答案时,您一定会收到反对票。@MarkusZellercount()-1不是必需的或技术上是正确的,for循环正在检查少于(notecount($list)
将在每次迭代中进行评估,您应该避免这样做,而是在循环之前将计数存储在一个变量中。好的,先生。我根据答案进行了编辑。这非常有用。感谢阅读和解决方案。不适合我,它仍在阅读($i=0;$isir,我更新了我的答案,为什么要否决投票?这非常有用。感谢阅读和解决方案。代码的美丽。否决投票人:虽然可能不是解决这个问题的最佳方法,但我们可以很容易地想象这样一种情况:对preg\u match\u all
进行两次单独的调用可能是有益的,例如,如果键/值是e不总是相邻的,并且在整个路径字符串中是连续的。
<?php
$str = 'php/127/typescript/12/jquery/120/angular/50';
$list = explode('/', $str);
$list_count = count($list);
$result = array();
for ($i=0 ; $i<$list_count; $i+=2) {
$result[ $list[$i] ] = $list[$i+1];
}
print_r($result);
?>
Array
(
[php] => 127
[typescript] => 12
[jquery] => 120
[angular] => 50
)