2011-05-05 227 views
3

对于此代码我得到error.at此行$sname[] = $rs['StudentId']; PHP致命错误:[]运算符不支持字符串 $ sname = array(); $ i = 0;[]运算符不支持字符串

foreach($data as $rs){ 

    foreach($SchoolName as $sname){ 
//  echo $rs['SchoolName'].'=='.$sname."<br />"; 
     echo $i."<br />";     
     if($rs['SchoolName'] == $sname){ 
      $sname[] = $rs['StudentId']; 
     } 
     $i++; 
    }     
} 
+0

请告诉我问题吗? – KingCrunch 2011-05-05 11:05:16

+0

[]运算符不支持字符串...请如何解决这个 – Allov 2011-05-05 11:05:46

+0

我假设$ rs是一个字符串,而不是一个数组。例如,用var_dump检查$ rs的数据。 – superbly 2011-05-05 11:06:21

回答

1

WORKING DEMO

$SchoolNames = Array(10003, "Southwestern College", "National University", "Western Governors University", "Southwestern College Admissions Center - Evaluations Dept"); 
$data = array(
    0 => Array(
     'STU_MANG_fname' => "Jennifer", 
     'STU_MANG_lname' => "patel", 
     'SchoolName' => "Southwestern College Admissions Center - Evaluations Dept", 
     'ShipAddress1' => "900 Otay Lakes Road", 
     'ShipState' => "CALIFORNIA" 
    ) 
); 


foreach($data as $studen_info){ 
    foreach($SchoolNames as $id=>$school_name){ 
     if($studen_info['SchoolName'] == $school_name){ 
      $student_names[$school_name] = $id; 
      //$student_names[$school_name] = $student_info['StudentId'];; 
     } 
    } 
} 

print_r($student_names); 

有学生信息数组中,你不给我“StudentId”,所以我想你想使用的学生阵列的关键,如果有,其实是“StudentId “使用我行注释掉

+0

$ rs是一个数组,$ rs ['SchoolName'] =>“学校名称” – Allov 2011-05-05 11:16:55

+0

我在说的是试图在字符串上添加一个数组项目 – mcgrailm 2011-05-05 11:17:11

+0

我想这个数组......存储学生与学校名称 阵列 ID( [西南大学] => 10002,2003,20225 [大学] => 10282,90281 [西部州长大学] => 156 ) – Allov 2011-05-05 11:17:32

2

在接下来的循环中,

foreach ($SchoolName as $sname) { 

你是屁股将$SchoolName的每个元素都指向$sname。然后在此行上:

$sname[] = $rs['StudentId']; 

您试图将$sname作为数组对待。我怀疑你有一个重复的变量名称。

+0

我声明:$ sname = array(); – Allov 2011-05-05 11:30:06

+0

,然后在内部循环中覆盖它。 ;) – 2011-05-05 11:33:30

+0

我想这个数组...... ......存储学校编号与学校名称Array([Southwestern College] => 10002,2003,20225 [National University] => 10282,90281 [Western Governors University] => 156 ) – Allov 2011-05-05 11:34:35

0

这应该工作 - 但你必须有StudentId指数呈现$ RS阵列,太...

$data = array(
    array("SchoolName" => "Roy", "StudentId" => "1000,1001,1002"), 
    array("SchoolName" => "MIT", "StudentId" => "2000,2001,2002"), 
    array("SchoolName" => "Southwestern College", "StudentId" => "3000,3001,3002"), 
    array("SchoolName" => "National University", "StudentId" => "4000,4001,4002"), 
    array("SchoolName" => "Western Governors University", "StudentId" => "5000,5001,5002"), 
); 

$return = array(); 

foreach($data as $rs){ 
    $return[$rs['SchoolName']] = $rs['StudentId']; 
} 

print_r($return); 

现场演示:http://codepad.org/HesEO4uF

+0

$ sname = array(); \t \t \t $ k = 0; \t \t \t为($ I = 0; $ I <计数($数据); $ I ++) \t \t \t { \t \t \t \t为($ J = 0; $Ĵ<计数($ SchoolName); $ J ++) \t \t \t \t { \t \t \t \t \t如果($数据[$ i]于[ 'SchoolName'] == $ SchoolName [$ J]){ \t \t \t \t \t \t $ sname [$ SchoolName [$ j]] [] = intval($ data [$ i] ['StudentId']); \t \t \t \t \t} \t \t \t \t \t} \t \t \t \t \t \t \t} – Allov 2011-05-05 11:50:52

+0

我不undersantd你来自哪里去那个阵列? – mcgrailm 2011-05-05 12:06:14

+0

我自己写过吗? – shadyyx 2011-05-05 12:07:41

0
$sname = array(); 
      $k=0; 
      for($i=0;$i<count($data);$i++) 
      { 
       $id_str ='';    
       for($j=0;$j<count($SchoolName);$j++) 
       {     
        if($data[$i]['SchoolName'] == $SchoolName[$j]){ 
         $id_str .= intval($data[$i]['StudentId']).","; 
        } 
        $sname[$SchoolName[$j]] = $id_str; 
       }    
      }