Php []字符串不支持运算符

Php []字符串不支持运算符,php,arrays,foreach,Php,Arrays,Foreach,对于这段代码,我得到了一个错误 PHP致命错误:[]字符串不支持运算符 $sname=array(); $i=0 foreach($data as $rs){ foreach($SchoolName as $sname){ // echo $rs['SchoolName'].'=='.$sname."<br />"; echo $i."<br />"; if($rs['SchoolNa

对于这段代码,我得到了一个错误
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++;  
    }                   
}
foreach($rs数据){
foreach($SchoolName作为$sname){
//echo$rs['SchoolName'].='.$sname.“
”; echo$i.“
”; 如果($rs['SchoolName']==$sname){ $sname[]=$rs['StudentId']; } $i++; } }


您给我的学生信息数组中没有“StudentId”,因此如果在下面的循环中有我注释掉的“StudentId”使用行,我假设您希望使用student数组的键

foreach ($SchoolName as $sname) {
您正在将
$SchoolName
的每个元素分配给
$sname
。然后在这一行:

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

您试图将
$sname
视为一个数组。我怀疑您有一个重复的变量名。

这应该可以-但您也必须在$rs数组中有
StudentId
索引

$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);
现场演示:

$sname=array();
$k=0;

对于($i=0;$i[]运算符不支持字符串…请解决此问题。我假设$rs是字符串而不是数组。例如,使用var_dump检查$rs的数据。错误。不要试图将字符串视为数组…我不知道,您想要实现什么。
$data
$rs
等等都不是非常清楚的变量名称。请描述什么它们是。另外,
$sname=$rs['StudentId'];
中的
如果
语句不起作用…你必须这样做:
$SchoolName[$i]=$rs['StudentId'];
中的$rs是一个数组,$rs['SchoolName']=>“SchoolName”我想说的是尝试访问字符串上的数组项我想使用此数组……使用校名数组存储学生id([西南学院]=>10002200320225[国立大学]=>1028290281[西部州长大学]=>156)请将完整数组转储到post$data数组中:[0]=>array([STU_MANG_fname]=>Jennifer[STU MANG_fname]=>patel[School Name]=>西南大学招生中心-评估部[ShipAddress1]=>900 Otay Lakes Road[ShipState]=>CALIFORNIA)我声明:$sname=array();然后在内部循环中覆盖它。;)我想要这个数组……用校名数组存储学生id([西南学院]=>10002200320225[国立大学]=>1028290281[西部州长大学]=>156)我应该使用intval()???????/$sname=array();$k=0;用于($i=0;$ii不了解数组从何而来?好吧,只是op发布了许多不同的数组,我没有看到那个,只是没有看到他是如何设置的。这一切都非常奇怪和混乱,我甚至后悔我在这里发布了:-D所以我建议它应该是什么样子,他应该如何使用它来实现预期的结果数组。。。
$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);
$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;
                }               
            }