foreach ($Pricea as $a) {
$b =explode("|",$a);
$c[] = $b[1];//符号
$d[] = $b[0];//价格
}
----------------------------------
//这里是do while循环里读取出来的.
$Price    = $rs['Price'];
$Pricev[] = substr($Price,0,strpos($Price,"|"));
$Prices[] = substr($Price,strpos($Price,"|")+1);
----------------------------------
这两个方法有什么不同么?刚才用第一个方式测试成功了..但不懂其中道理.还望请教!谢谢!

解决方案 »

  1.   

    foreach,do...while都是遍历数组,像是区别不大,是不是条件不同造成的呢 ?
      

  2.   

    我输入print_r($Price)都是一样的呢.所以条件应该是相同的.但就是会出现Cannot use string offset as an array in E:\DATA\Report.php on line 119;这样的错误...
    不知其理.
      

  3.   

    for ($j=0;$j<count($c);$j++) {
        if ($Pricet[$i]==$c[$j]) $Price[$i][] = $d[$j];// line 119 
    }
      

  4.   

    try:<?php
    $Price = array("212|RMB","152|RMB","170|RMB","321|RMB","140|USD","210|USD");//价格|符号
    foreach($Price as $v)
    {
    $t = explode("|", $v);
    $a[$t[1]] += $t[0];
    }
    var_dump($a);
    ?>
      

  5.   

    $Princet[$i]是字符串,$Princet[$i][] = ''是什么?相当于"RMB"[] = 'something',这样肯定是语法错误的.根据你的需求,将$Princet[$i]做下标即可for ($i=0;$i<count($Pricet);$i++) {
    for ($j=0;$j<count($c);$j++) {
    if ( $Pricet[$i] == $c[$j] ) $p[$Pricet[$i]][] = $d[$j];//改改
    }
    //print_r($p);
    echo $Pricet[$i].":".array_sum($p[$Pricet[$i]]);//符号:价格
    }
      

  6.   

    if ($Pricet[$i]==$c[$j])
    确认在这里都是字符串吗?
    是不是强制转换一下,再比较
      

  7.   

    回清水:
    没有这个$Princet[$i][] = '',是$Price[$i][],我是想让那个数组以符号分组的.相当于$Price1[]=array(...);$Price2[]=array(....)回cho..都是字符串来的.
      

  8.   

    wasuka(萝莉控):prefect! ~_~
    加分..结帖.
      

  9.   

    哦$Price = array("212|RMB","152|RMB","170|RMB","321|RMB","140|USD","210|USD");那$Price[$i]可不也是字符串么?$Price[$i][]也是相同的语法错误呀?(Fatal error: [] operator not supported for strings)
    如果欲以符号分组,可以将符号作为第一维数组的下标,$p["RMB"] = '总数'这样...
      

  10.   

    Fatal error: [] operator not supported for strings)?你那里的是这样的错误么??