【问题标题】:PHP : Split a comma delimited & special symbol string into an arrayPHP:将逗号分隔和特殊符号字符串拆分为数组
【发布时间】:2015-02-03 06:04:23
【问题描述】:

我已经看到如何在 PHP 中使用

将逗号分隔的字符串拆分为数组
$myArray = explode(',', $myString);

但是当一些逗号分隔值后面有特殊符号时如何执行相同的操作,当找到特殊符号(@)时,然后开始一个新的内部数组。

我有一个这样的字符串

Treatment1,2,500,0%,1000,note1, @ Treatment2,1,2000,250 INR,1750,note2,

那么我需要一个这样的数组

Array
(

        [0] => Array
            (
                [treatment] => Treatment1
                [quantity] => 2
                [cost] => 500
                [discount] => 0%
                [discount_type] => INR
                [total] => 1000
                [note] => note1 
            )

        [1] => Array
            (
                [treatment] => Treatment2
                [quantity] => 1
                [cost] => 2000
                [discount] => 250
                [discount_type] => INR
                [total] => 1750
                [note] => note2 
            )
)

任何帮助将不胜感激

【问题讨论】:

  • 你有没有尝试过? (提示:首先用 '@' 爆炸它,然后用 ',' 爆炸每个部分:D 试着弄清楚!)
  • 是的,我尝试过像这样使用explode $myArray[] = explode(',', $cell_value); $myArray[][] = explode('@', $cell_value); ,但我将 o/p 作为 Array ( [0] => Array ( [0] => Treatment1 [1] => 2 [2] => 500 [3] => 0 % [4] => 1000 [ 5] =>注1 [6] => @治疗2 [7] => 1 [8] => 2000 [9] => 250 INR [10] => 1750 [11] => [12] => ) [1 ] => 数组([0] => Treatment1,2,500,0 %,1000,note1, [1] =>Treatment2,1,2000,250 INR,1750,, ))
  • 阅读我在第一条评论中的提示,然后再试一次!
  • 是的,这就是逻辑:)

标签: php arrays string codeigniter explode


【解决方案1】:

试试这个 -

str = "your string";
$arr = explode('@', $str);
$newArray = array();
foreach ($arr as $val) {
   $temp = explode(',', $val);
   $newTemp['treatment'] = $temp[0];
   $newTemp['quantity'] = $temp[1];
   $newTemp['cost'] = $temp[2];
   $newTemp['discount'] = $temp[3];
   $newTemp['discount_type'] = "INR";
   $newTemp['total'] = $temp[4];
   $newTemp['note'] = $temp[5];
   $newArray[] = $newTemp;
   $temp = array();
}
var_dump($newArray);

【讨论】:

    【解决方案2】:

    使用此代码

    $str = "Treatment1,2,500,0%,1000,note1, @ Treatment2,1,2000,250 INR,1750,note2,";
    
    $arr1 = explode("@",$str);
    
    //print_r($arr1);
    
    $finalArr = array();
    
    foreach($arr1 as $val)
    {
        $finalArr[] = explode(",",$val);
    }
    
    print_r($finalArr);
    

    【讨论】:

    • 这个投票怎么样?这不是OP想要的。 (另外他在数组中有一些空元素)
    • 钥匙和discount_type 呢??
    • 这有空元素,因为字符串有多余的逗号,这不是我的错。
    • 它应该被照顾。
    • 我不知道场景中的所有代码我如何衡量为什么会这样以及它的用途。
    猜你喜欢
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    相关资源
    最近更新 更多