首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用数组和foreach循环从另一个字符串中获取字符串。

使用数组和foreach循环从另一个字符串中获取字符串。
EN

Stack Overflow用户
提问于 2015-05-08 15:21:13
回答 3查看 60关注 0票数 0

我想从另一个字符串中创建一个字符串:

1-第一个字符串是:“4-3_

2-新字符串必须是:"4,5,9,7,2“

我有这段代码,但它不起作用:

代码语言:javascript
运行
复制
$string_1 = '4-3|5-2|9-6|7-1|2-8';

$array_1 = explode('|', $string_1);

$string_2 = '';

foreach ( $array_1 as $item ) {

    $array_2 = explode('-', $item);

    foreach ( $array_2 as $item_id => $item_value ) {

        $string_2 .= ($string_2 == '') ? $item_id : ', ' . $item_id;

    }

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-08 15:35:45

在这个任务中使用RegEx如何?

使用正则表达式的代码:

代码语言:javascript
运行
复制
$string_1 = '4-3|5-2|9-6|7-1|2-8';
preg_match_all('/(\d+)-\d+\|?/',$string_1,$matches);
$string_2 = implode(", ", $matches[1]);

演示

它比循环遍历字符串的每个字符要有效得多。

Regex解释道:

正则表达式可视化为RailRoad图:

  • (\d+):第一个\d匹配一个数字。+指的是一次或多次。它周围的()创建一个组,这意味着匹配将存储在$matches数组中。
  • -:后面跟着一个简单的破折号
  • \d+:然后又出现了另一个数字一次或多次
  • \|?:和管道字符\| (需要转义)。?意味着完全有一个或没有管道。

然后,全场比赛将搜索给定字符串中的所有可能(重复)匹配。

票数 7
EN

Stack Overflow用户

发布于 2015-05-08 15:33:32

您正在使用$item_id,但它表示$array_2索引。试试这个:

代码语言:javascript
运行
复制
foreach ( $array_1 as $item ) {
    $array_2 = explode('-', $item);
    $string_2 .= ($string_2 == '') ? $array_2[0] : ', ' . $array_2[0];
}

第二个循环是不必要的,它将检查每一行$array_1 2次,所以您将检索所有的值,而不是第一个值。

票数 2
EN

Stack Overflow用户

发布于 2015-05-08 15:34:10

你所做的几乎是正确的。爆炸后,您只需将前端循环中的字符串连在一起即可。

代码语言:javascript
运行
复制
$array_1 = explode('|', $string_1);

$string_2 = '';


foreach ( $array_1 as $item ) {

    $array_2 = explode('-', $item);

    $string_2.= $array_2[0].' ';

}
echo $string_2;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30127358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档