【问题标题】:PHP Separate comma array into variable / valuesPHP 将逗号数组分隔为变量/值
【发布时间】:2014-09-08 09:39:59
【问题描述】:

我在表格字段中有一个字符串,如下所示:

part1=1,part2=S,part3=Y,part4=200000

要从表中调用它,我这样做:

 while($row = mysqli_fetch_array($result)) {


        $row['mystring'];


}

我的问题是我需要将部分分成变量,例如:

从这里:

part1=1,part2=S,part3=Y,someothername=200000

到这里:

$part1 = '1';
$part2 = 'S';
$part3 = 'Y';
$someothername = '200000';

我该怎么做?

【问题讨论】:

    标签: php


    【解决方案1】:

    这样使用

    parse_str( str_replace(",", "&", "part1=1,part2=S,part3=Y,someothername=200000") );
    

    与那里的名称一起使用,例如:

    $part1 // return 1
    $part2 // return S
    $part3 // return Y
    

    如您所愿,请参阅demo

    【讨论】:

      【解决方案2】:

      第一个拆分字符串:

      $s = "part1=1,part2=S,part3=Y,part4=200000";
      $a = explode(",",$s);
      

      然后 foreach 部分字符串 ("part1=1"...) 创建一个数组并作为变量展开:

      foreach($a as $k=>$v)
      {
       $tmp = explode("=",$v);
       $tmp = array($tmp[0]=>$tmp[1]);
       extract($tmp);
      }
      echo $part1;
      

      【讨论】:

        【解决方案3】:

        如果你使用 PHP 5.3+,你可以使用 array_map

        <?php
        
        $string = 'part1=1,part2=S,part3=Y,part4=200000';
        
        array_map(function($a){
            $tmp = explode('=', $a, 2);
            global ${$tmp[0]}; //make vars available outside of this function scope
            ${$tmp[0]} = $tmp[1]; 
        }, explode(',', $string));
        
        //Variables available outside of array_map scope
        echo $part1 . '<br>';
        echo $part2 . '<br>';
        echo $part3 . '<br>';
        echo $part4 . '<br>';
        
        ?>
        

        【讨论】:

          【解决方案4】:

          explode 你的字符串以获得想要的字段:

          $string ="part1=1,part2=S,part3=Y,someothername=200000";
          
          foreach (explode(',', $string) as $parts) {
            $part = explode('=', $parts);
            $array[$part[0]] = $part[1];
          }
          
          var_dump($array);
          

          输出:

           array(4) {
            ["part1"]=>
            string(1) "1"
            ["part2"]=>
            string(1) "S"
            ["part3"]=>
            string(1) "Y"
            ["someothername"]=>
            string(6) "200000"
          }
          

          我不建议使用可变变量来获得输出:

          $part1 = ...
          $part2 = ...
          

          在这里使用数组可能是最简单和最安全的方法。正如我在评论中所建议的那样,它避免了与变量名的潜在冲突。

          【讨论】:

          • 你可以在最后使用 extract() 来获取你的变量,但我也会坚持使用数组
          • @DavidJones 没错,我应该指定在这种情况下,最好避免直接命名变量,以避免可能与现有的同名变量发生冲突。
          • 是的,这是真的,我同意你关于保留数组但 OP 想要变量 :)
          【解决方案5】:

          您可以使用称为“变量”的东西。如果使用双美元符号而不是单美元符号,则可以将变量的内容声明为变量。例如:

          $fruit = "apple";
          $$fruit = "this is the apple variable";
          echo $apple;
          

          它将输出以下内容:

          这是苹果变量

          在从数组中定义变量时,您必须更加棘手,因为您必须将原始变量括在大括号中。 (例如:${$fruit[0]}

          所以你的问题的答案是:

          $parts = "part1=1,part2=S,part3=Y,someothername=200000";
          $parts_array = explode(",", $parts);
          foreach ($parts_array as $value) {
              $temp = explode("=", $value);
              ${$temp[0]} = $temp[1];
          }
          echo "$part1, $part2, $part3, $someothername";
          

          PHPFiddle 链接:http://phpfiddle.org/main/code/adyb-ug5n

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-05-27
            • 2017-06-22
            • 1970-01-01
            • 1970-01-01
            • 2021-07-23
            • 1970-01-01
            • 2016-02-08
            • 1970-01-01
            相关资源
            最近更新 更多