如何在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

如何在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 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。当您过快地发布错误答案时,您一定会收到反对票。@MarkusZeller
count()-1不是必需的或技术上是正确的,for循环正在检查少于(
note
count($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
    )