首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP转换字符串

PHP转换字符串
EN

Stack Overflow用户
提问于 2014-10-16 17:41:46
回答 4查看 60关注 0票数 1

假设我有一个具有以下结构的数组

代码语言:javascript
复制
$array = Array(Array('a' => 'a', 'x' => $something));

变量$something可以是这样的: 1-3或1,3或1-3,2-5。I如何将变量$array转换为:

情况1. $something = 1-3

代码语言:javascript
复制
$array = Array(Array('a' => 'a', 'x' => Array(1,2,3)));

情况2. $something = 1,3

代码语言:javascript
复制
$array = Array(Array('a' => 'a', 'x' => Array(1,3)));

案例3..$something = 1-3,2-5

代码语言:javascript
复制
$array = Array(Array('a' => 'a', 'x' => Array(1,2,3,4,5)));

我试着使用preg_match,但它不起作用。你能提示我用别的东西吗?

EN

回答 4

Stack Overflow用户

发布于 2014-10-16 17:53:45

您正在寻找用于拆分输入字符串的explode、用于生成数组内容的range和用于合并结果的array_merge

类似这样的东西是有效的:

代码语言:javascript
复制
<?php
$something = '1-3, 2-5';
$array = array(array('a' => 'a', 'x' => array()));

$result = array();

foreach (explode(', ', $something) as $input) {
    $rangeParts = explode('-', $input);
    $result = array_merge($result, range($rangeParts[0], $rangeParts[1]));    
}

// contains duplicate entries because 1-3 and 2-5 overlap - use array_unique to remove duplicates or change input
$array[0]['x'] = $result;

在最后一个赋值中,您可以将$result包装在array_unique中,以1:1匹配您的示例,也可以编辑输入($something)以正确反映range函数的包含/排除规则。

票数 1
EN

Stack Overflow用户

发布于 2014-10-16 17:48:28

你有

代码语言:javascript
复制
$array = Array(Array('a' => 'a', 'x' => $something));

若要修改此数组中“x”的内容,请执行以下操作。(您不能修改$something)。

代码语言:javascript
复制
$array[0]['x'] = Array(1,2,3);  

$array =数组(1,2,3,4,5);

票数 0
EN

Stack Overflow用户

发布于 2014-10-16 18:00:55

如果$something中的值始终按照您的示例所示进行排序,则可以使用以下代码

代码语言:javascript
复制
$newomething = range(substr($something, 0, 1),substr($something, -1));

使用未排序的输入更新工作解决方案。以下代码将在如下所示的输入上工作

代码语言:javascript
复制
  $something= '4,5,1-3,13,7-9';

    $something = explode(',',$something);
    $result= array();
   foreach($something as $value) 
   {
      if (strpos($value,'-') !== false)
       {
         $r = explode('-',$value);
         $rad = range($r[0],$r[1]);
         $result = array_merge($result,$rad);
        }
       else
       {
        array_push($result,$value);
        }   
    }
    sort($result);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26401138

复制
相关文章

相似问题

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