【问题标题】:I want to convert php string of form {1}1{2}3{3}6 to php array [closed]我想将 {1}1{2}3{3}6 形式的 php 字符串转换为 php 数组 [关闭]
【发布时间】:2015-12-29 05:37:38
【问题描述】:

我在 php 中得到了这个 {1}1{2}3{3}6 字符串的格式,我想让花括号中的数字成为数组的索引,并且存储在索引上的值将是花括号后面的值。这样我就可以轻松地申请foreach 来输入数据库中的值。

输出数组应该是这样的:

array([1]=>1,[2]=>3,[3]=>6)

【问题讨论】:

  • 字符串为 $str = "{1}1{2}3{3}6"; ?是这样的吗?
  • 你试过什么?
  • 我在花括号中获取产品选项 ID,在花括号结束后获取产品选项值 ID。所以我想将 thi 转换为数组,所以我将它保存在数据库中 Product Options Product Options Id 1 1 2 3 3 6

标签: php arrays


【解决方案1】:
$result = [];
$data = '{1}1{2}3{3}6';
preg_match_all('/\{(\d+)\}\s*(\d+)/', $data, $m);
foreach ($m[1] as $i => $key) {
    $result[$key] = $m[2][$i];
}

【讨论】:

  • 这对我有用。刚刚为我更改了这个 $result = array();
【解决方案2】:

您可以使用正则表达式“正则表达式”尝试如下:

<?php
$string="{1}1{2}3{3}6";

//Define the regex
$regex = "/{([a-zA-Z0-9_]*)}\s*([a-zA-Z0-9_]*)/";
preg_match_all($regex, $string, $matches);

//Temporary array to store the data
$arry = array();
foreach($matches[1] as $key => $value){
        $arry[$value] = $matches[2][$key];
}
var_dump($arry);
?>

[概念证明]

数组(3) {

[1]=> 字符串(1) "1"
[2]=> 字符串(1)“3”
[3]=> 字符串(1)“6”

}

【讨论】:

    【解决方案3】:

    试试:

    $str = '{1}1{2}3{3}6';
    $arr = explode("}", substr(str_replace("{", "}", $str), (strlen($str)-1)*-1));
    $arr = array_map(function ($v){ global $arr; return $arr[$v+1]; }, array_flip(array_intersect_key($arr, array_flip(array_filter(array_keys($arr), function ($v){ return !($v & 1); })))));
    

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 2011-02-11
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 2020-04-08
      • 2010-10-22
      • 2018-08-01
      • 1970-01-01
      相关资源
      最近更新 更多