源串:
[['34609889', '4', '350000,450000,460000,540000,610000,620000,630000,640000,650000', '15.0', '0.0'],['34609888', '4', '130000,140000,150000,210000,220000,230000,340000,360000,370000,410000,420000,430000,440000,500000,510000,520000,530000', '12.0', '0.0'],['34609887', '4', '710000,810000,820000', '90.0', '10.0'],['34609886', '4', '110000,120000,310000,320000,330000', '6.0', '0.0'],['34609885', '4', '1', '12.0', '0.0']]要提取的数是包含610000的那个方括号中的倒数第二个,请问有什么方法?
先谢谢各位了

解决方案 »

  1.   

    如果没有其他条件,只能当成一个字符串$str的话!直接用explode(',',$str)将字符串用逗号分割成数组读取就应该可以了!不过这个字串怎么看就是个数组啊,怎么整成这样了,如果能看到数组生成的源码就更好读取了!
      

  2.   

    <?
    $str="[['34609889', '4', '350000,450000,460000,540000,610000,620000,630000,640000,650000', '15.0', '0.0'],['34609888', '4', '130000,140000,150000,210000,220000,230000,340000,360000,370000,410000,420000,430000,440000,500000,510000,520000,530000', '12.0', '0.0'],['34609887', '4', '710000,810000,820000', '90.0', '10.0'],['34609886', '4', '110000,120000,310000,320000,330000', '6.0', '0.0'],['34609885', '4', '1', '12.0', '0.0']]";
    $arr=explode(',',$str);
    $result=trim(str_replace("'","",$arr[11]));
    echo $result;
    ?>
      

  3.   

    split(",")得到数组,
    然后循环比对
      

  4.   

    $s = <<< TEXT
    [['34609889', '4', '350000,450000,460000,540000,610000,620000,630000,640000,650000', '15.0', '0.0'],['34609888', '4', '130000,140000,150000,210000,220000,230000,340000,360000,370000,410000,420000,430000,440000,500000,510000,520000,530000', '12.0', '0.0'],['34609887', '4', '710000,810000,820000', '90.0', '10.0'],['34609886', '4', '110000,120000,310000,320000,330000', '6.0', '0.0'],['34609885', '4', '1', '12.0', '0.0']]
    TEXT;preg_match_all('/\[([^\[]+?)\]/', $s, $r);foreach($r[1] as $r) {
      if(in_array(610000, $a = split(',', $r))) {
        echo current(array_slice($a, -2, 1));
        break;
      }
    }
      

  5.   


    preg_match("/\[[\s,'0-9]+610000[\.\s\,\'0-9]+\]/",$str,$match);echo(str_replace('\'','',current(array_slice(explode(',',$match[0]),-2,1))));
    结果15.0